我有这个
var manager = context.ManagerInfoes.Select(m => m.Guid == managerGuid).First();
我该怎么把它投到:
ManagerInfo manager = context.ManagerInfoes.Select(m => m.Guid == managerGuid).First();
我想获得First()真实元素
答案 0 :(得分:4)
直接使用First()
而不是投放到Guid
属性:
ManagerInfo manager = context.ManagerInfoes.First(m => m.Guid == managerGuid);
这与使用var
:
var manager = context.ManagerInfoes.First(m => m.Guid == managerGuid);
在这种情况下,我发现后一版本更具可读性。
答案 1 :(得分:1)
如下所示使用FirstOrDefualt
ManagerInfo manager = context.ManagerInfoes.FirstOrDefault(m => m.Guid == managerGuid);
if(manager!=null)
{
//your code
}
优势:如果它无法找到给定条件的对象,则返回null而不是给出错误,因为你可以通过checing null看到,所以在运行时它不会破坏你的应用程序
答案 2 :(得分:1)
我认为除了FirstOrDefault()之外你应该使用“Where”而不是“Select”。
例如:
ManagerInfo manager = context.ManagerInfoes.Where(m => m.Guid == managerGuid).FirstOrDefault();
看看这是否有帮助。
答案 3 :(得分:-1)
您的代码
var manager = context.ManagerInfoes.Select(m => m.Guid == managerGuid).First();
未执行。 CLR在运行时通过此行后。在这个时候,你的经理只有一个表达式,当迭代时,会产生你正在寻找的结果。
您需要致电ToList()
或ToArray()
以获取查询结果。 击>
修改强>
上面的代码与使用强类型声明管理器的代码相同。 First()
方法返回TSource
类型的对象,在您的情况下,TSource
为typeof(ManagerInfo)
ManagerInfo manager = context.ManagerInfoes.Select(m => m.Guid == managerGuid).First();