两者之间的区别是什么?前一个有效,但第二个有错误,说明找不到'选择'。我不明白为什么
第一
Office Office =
cHelper.Offices
.Where(o => o.IP3rdOctet == OSHelper.Get3rdOctetOfMyIP())
.FirstOrDefault();
第二
Office Office =
from o in cHelper.Offices
.Where(o => o.IP3rdOctet == OSHelper.Get3rdOctetOfMyIP())
.FirstOrDefault()
select o;
答案 0 :(得分:2)
这是不 IEnumerable
或IQueryable
,它是Office
的实例:
cHelper.Offices.Where(o => o.IP3rdOctet
== OSHelper.Get3rdOctetOfMyIP()).FirstOrDefault()
您无法在此致电select
。移除对FirstOrDefault()
的呼叫,然后您就可以选择结果(如果没有符合您条件的项目,则结果为空)。
如果您仍然需要FirstOrDefault
项,请将查询放在括号中并附加FirstOrDefault()
,如下所示:
Office Office = (from o in cHelper.Offices
where o.IP3rdOctet == OSHelper.Get3rdOctetOfMyIP()
select o).FirstOrDefault();
答案 1 :(得分:1)
select
适用于IEnumerable
,您尝试在FirstOrDefault
之后使用选择
像这样重写:
Office Office = (from o in cHelper.Offices
where o.IP3rdOctet == OSHelper.Get3rdOctetOfMyIP()
select o).FirstOrDefault();