我有以下清单
ID  Counter  SrvID FirstName
--  ------   ----- ---------  
1   34       66M   James
5   34       66M   Keith
3   55       45Q   Jason
2   45       75W   Mike
4   33       77U   Will
我喜欢做的是按ID按升序排序,然后得到Counter,SrvID的第一个值相同(如果有的话).
所以输出将是这样的:
ID  Counter  SrvID FirstName
--  ------   ----- ---------  
1   34       66M   James
2   45       75W   Mike
3   55       45Q   Jason
4   33       77U   Will
注意如何从列表中删除ID为5,因为Counter和SrvID与我对ID 1的相同,但是ID 1首先被删除了5.
这是我会做但不工作的
    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()
vc *_* 74 36
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);
Amy*_*y B 25
将记录分组,并从每个组中挑选一名获胜者.
var query =
  from record in list1
  group record by new {record.Counter, record.SrvID } into g
  let winner =
  (
    from groupedItem in g
    order by groupedItem.ID
    select groupedItem
  ).First()
  select winner;
var otherQuery = list1
  .GroupBy(record => new {record.Counter, record.SrvID })
  .Select(g => g.OrderBy(record => record.ID).First());
| 归档时间: | 
 | 
| 查看次数: | 61589 次 | 
| 最近记录: |