一个关于linq效率的小问题
现在想获得一个list中符合某条件的一个元素,如果超过一个则返回默认的第一个,如果没有则返回null
现在实现方式有两种
一:
var result = from t in tProjectORGs where t.CLASSID == tProjectGeneral.ID select t;
if (result.Count() > 0)
{
return result.ToList()[0];
}
else
{
return null;
}
二:
IList<AGSDM_PROJECT> tProjectInORGs = tProjectORGs.Where(t => t.CLASSID == tProjectGeneral.ID).ToList();
if (tProjectInORGs.Count > 0)
{
return tProjectInORGs[0];
}
else
{
return null;
}
请问哪种效果更优??
------解决方案--------------------
上面两种编译后基本没什么区别,要用也是优先选用三目判断
其实写成下面这样最简单
var result = tProjectORGs.FirstOrDefault(p => p.CLASSID == tProjectGeneral.ID);