林克如何铸造到实物

本文关键字:何铸造 林克 | 更新日期: 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的对象,在您的情况下,TSourcetypeof(ManagerInfo)ManagerInfo manager=上下文。ManagerInfoes.Select(m=>m.Guid=managerGuid).First();