当前位置:  开发笔记 > 编程语言 > 正文

展平Linq Group查询

如何解决《展平LinqGroup查询》经验,为你挑选了1个好方法。

我有一个像这样的数据列表:

ID AddressPurpose Address ...
1  L
1  P
2  L
2  P
3  P
3  L
4  P
4  L
5  P
6  L

我希望能够过滤数据,以便对于每个唯一的数字,如果有一个P行,则返回它,否则返回L行.所以数据看起来像这样:

ID AddressPurpose Address ...
1  P
2  P
3  P
4  P
5  P
6  L

目前我有这个查询工作正常:

var query = from c in list
            orderby c.AddressPurpose descending
            group c by c.ID
            into g
                select g;

var finalList = new List();
foreach (var list in query)
{
    finalList.Add(list.First());
}
return finalList;

没有使用额外的foreach,有没有更好的方法来做到这一点?



1> Matt Hamilto..:

您可以始终嵌套查询:

var query =
    from i in (
        from c in list 
        orderby c.AddressPurpose descending 
        group c by c.ID into g 
        select g)
    select i.First();

return query;

我确信这不是唯一的方法(或者甚至可能是最好的方式),但它确实将你的"foreach"包装到一个查询中.

编辑

实际上,您可以将其简化为:

var query = from c in list
            orderby c.AddressPurpose descending
            group c by c.ID into g
            select g.First();

这似乎给出了正确的结果.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有