读书人

System.NotSupportedException: 不支持

发布时间: 2011-12-08 21:33:54 作者: rapoo

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。

读书人网 >.NET

热点推荐