日期:2014-05-20  浏览次数:20727 次

一个关于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);