林克如何铸造到实物
本文关键字:何铸造 林克 | 更新日期: 2023-09-27 18:28:34
我有这个
var manager = context.ManagerInfoes.Select(m => m.Guid == managerGuid).First();
我该怎么选:
ManagerInfo manager = context.ManagerInfoes.Select(m => m.Guid == managerGuid).First();
我想得到第一个()实元素
直接使用First()
,而不是投影到Guid
属性:
ManagerInfo manager = context.ManagerInfoes.First(m => m.Guid == managerGuid);
这相当于(都是强类型的)使用var
:
var manager = context.ManagerInfoes.First(m => m.Guid == managerGuid);
在这种情况下,我发现更高版本的可读性。
使用FirstOrDefualt
,如下
ManagerInfo manager = context.ManagerInfoes.FirstOrDefault(m => m.Guid == managerGuid);
if(manager!=null)
{
//your code
}
优点:如果它无法为给定条件找到对象,则返回null,而不是像您在上面通过检查null看到的那样给出错误,因此在运行时它不会破坏您的应用程序
我认为除了FirstOrDefault()之外,还应该使用"Where"而不是"Select"。
例如:
ManagerInfo manager = context.ManagerInfoes.Where(m => m.Guid == managerGuid).FirstOrDefault();
看看这是否没有帮助。
您的代码
var manager = context.ManagerInfoes.Select(m => m.Guid == managerGuid).First();
不会被执行。CLR在运行时通过此行之后。此时,您的经理只有一个表达式,该表达式在迭代时会产生您想要的结果。您需要调用ToList()
或ToArray()
才能从查询中获得结果
编辑上面的代码与用强类型声明管理器的代码完全相同。First()
方法返回类型为TSource
的对象,在您的情况下,TSource
是typeof(ManagerInfo)
ManagerInfo manager=上下文。ManagerInfoes.Select(m=>m.Guid=managerGuid).First();