LINQ - 如何在GroupBy之后获取列的子集

时间:2014-12-17 15:25:14

标签: c# c#-4.0 linq-to-sql

这个LINQ-to-SQL查询有效(在LINQpad中测试):

var q5 = LOGs.Where(r => r.APP_NAME == "Toaster")  
    .GroupBy(pol => pol.CASE_NO)  
    .Select(grp => grp.First())  
    .OrderByDescending(l => l.WHEN);  
q5.Dump();   

但是,它会返回每行的所有列 如何优化Select()部分以指定某些列?
通过在查询中添加.ToList(),然后查询q5,我可以分两步完成:

var q5a = q5.Select(r => new {CASE=r.CASE_NO, WHEN = r.WHEN});  
q5a.Dump();  

我可以用一个陈述而不是两个陈述来完成吗? 谢谢 -

1 个答案:

答案 0 :(得分:1)

为什么不在哪里过滤?

 var q5 = LOGs.Where(r => r.APP_NAME == "Toaster")
    .Select(r=> new{r.CASE_NO, r.WHEN})  
    .GroupBy(pol => pol.CASE_NO)  
    .Select(grp => grp.First())  
    .OrderByDescending(l => l.WHEN);  

记得new {CASE=r.CASE_NO, WHEN = r.WHEN}因为不同的属性名称而创建了一个新的匿名类型,new {r.CASE_NO, r.WHEN}没有!