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

感觉这个应该很简单,但是为何出错呢

var query = db.t_News.GroupBy(q => q.Category)
                       .Select(q => new
                       {
                           Cate = q.Key,
                           Que = q.Take(4)
                       }).ToList();


目的是分组之后,取每组的前4条数据。
但是报错“执行命令定义时出错。有关详细信息,请参阅内部异常。”

发现是q.Take(4)这里有错,如果直接写q,就可以通过。
难道分组之后不能再取前N行?

------解决方案--------------------
var query = db.t_News.GroupBy(q => q.Category)
                       .Select(q => new
                       {
                           Cate = q.Key,
                           Que = q.Take(4)
                       }).ToList();
这样写是可以的。你是LINQ to sql还是LINQ to EF
------解决方案--------------------
不要想着什么都一行语句搞定。有时候超出了能力范围,我们就用土办法for循环,可能更快。