我一直在使用
if(_context.Foo.Any(o => o.Id == id))
{
var myfoo = _context.Foo.Where(o => o.Id == id).FirstOrDefault();
}
檢查記錄是否存在并選擇它。
是否有更簡潔的方法可以使用單個查詢來執行此操作,如果找到則回傳物件?
uj5u.com熱心網友回復:
其他人已經指出,如果沒有專案匹配,FirstOrDefault 將回傳 null。
我要補充一點,你可以通過模式匹配變得非常簡潔,另外還有一個好處是確定變數的范圍,所以它只能在它不為空的情況下使用。
if(_context.Foo.FirstOrDefault(o => o.Id == id) is Foo myfoo)
{
// use myfoo
}
// compiler will complain if you use myfoo out here.
uj5u.com熱心網友回復:
我可能更喜歡看到這樣的東西:
var myFoo = _context.Foo.FirstOrDefault(x => x.Id == id);
if (myFoo != null)
{
//do something.
}
uj5u.com熱心網友回復:
您可以使用 which 將回傳objectif found, else null:
var fooObject = _context.Foo
.FirstOrDefault(x => x.Id == id);
如果你想要一個async版本,你可以這樣做:
var fooObject = await _context.Foo
.FirstOrDefaultAsync(x => x.Id == id);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/515624.html
標籤:C#实体框架林克
上一篇:將帶有子查詢的SQL轉換為LINQ(lamda運算式)
下一篇:通過Linq進行分組和求和
