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

c#里使用linq的问题,报错说不支持查询运算符last.
var query = from a in db.SysMenuTbl
  where a.ParentMenuID == 0
  select a;

  string mmnanme = query.Last().MenuName;

就是从数据库表里读数据,然后把最后一条的一个字段内容给一个变量,就这么简单,但是运行报错说
 System.NotSupportedException: 不支持查询运算符“Last”
 

------解决方案--------------------
重新order一下, 用 query.FirstOrDefault()
------解决方案--------------------
var query = from a in db.SysMenuTbl
where a.ParentMenuID == 0
orderby a.**** //根据你自己的排序规则
select a; 


string mmnanme = query.FirstOrDefault().MenuName;
------解决方案--------------------
非常反对使用 

query.ToList().Last().MenuName;

或者

query.AsEnumerable().Last().MenuName;

这种做法。


知道Linq to SQL(其它Linq Provider也类似)的特点么?它自动编译为SQL语句然后拿出结果,而不是把数据逐一搜索到内存里再来筛选。


我是很不愿意听到有些人骂vs这种IDE让很多程序员变成笨蛋的。但是,有时候工具放在一些不求甚解的人手中,确实会害了这些人。这主要是人的原因,而不能怪工具。对于Linq也是这样,一定要懂得一些深度的知识,才能正确使用Linq。