LINQ GROUP BY,ORDER BY [英] linq group by, order by

查看:830
本文介绍了LINQ GROUP BY,ORDER BY的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下列表



  ID计数器SrvID姓
- ------ - --- ---------
1 34 66M詹姆斯
5 34 66M基思
3 55 45Q杰森
2 45 75W迈克
4 33 77U将

我喜欢做的是通过ID以升序排序,然后
获得。计数器,SrvID的第一个值是相同的(如果有的话)



所以输出会是这样的:

  ID计数器SrvID姓
- ------ ----- ---------
1 34 66M詹姆斯
2 45 75W迈克
3 55 45Q杰森
4 33 77U将

请注意是如何的5 ID从列表中移除,计数器和SrvID是相同的东西我有ID 1,但作为ID 1是先
我删除5。



这是我会做什么,但不工作

  VAR的结果=(从list1的
LS TS组通过新的{ls.Counter,ls.SrvID}
为了通过ls.ID
选择新{
ls.ID,
ls.Counter.FirstOrDefault(),
ls.SrvID.First,
ls.FirstName})了ToList()


解决方案

  list1.GroupBy(项目=>新{计数器= item.Counter,SrvID = item.SrvID})
。选择(组=>新建{
ID = group.First()。ID,
计数器=组。 Key.Counter,
SrvID = group.Key.SrvID,
名字= group.First()名字})
.OrderBy(项目=方式> item.ID);


I have the following list

ID  Counter  SrvID FirstName
--  ------   ----- ---------  
1   34       66M   James
5   34       66M   Keith
3   55       45Q   Jason
2   45       75W   Mike
4   33       77U   Will

What I like to do is to order by ID by ascending and then get the first value of Counter, SrvID which are identical (if any).

So the output would be something like:

ID  Counter  SrvID FirstName
--  ------   ----- ---------  
1   34       66M   James
2   45       75W   Mike
3   55       45Q   Jason
4   33       77U   Will

Note how ID of 5 is removed from the list as Counter and SrvID was identical to what I had for ID 1 but as ID 1 came first I removed 5.

This is what I would do but not working

    var result = (from ls in list1
                  group ts by new {ls.Counter, ls.SrvID}
                order by ls.ID
                  select new{
                             ls.ID,
                             ls.Counter.FirstOrDefault(),
                             ls.SrvID.First,
                             ls.FirstName}).ToList()

解决方案

list1.GroupBy(item => new { Counter = item.Counter, SrvID = item.SrvID })
     .Select(group => new { 
        ID = group.First().ID, 
        Counter = group.Key.Counter,
        SrvID = group.Key.SrvID,
        FirstName = group.First().FirstName})
     .OrderBy(item => item.ID);

这篇关于LINQ GROUP BY,ORDER BY的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆