我有以下清单
ID Counter SrvID FirstName
-- ------ ----- ---------
1 34 66M James
5 34 66M Keith
3 55 45Q Jason
2 45 75W Mike
4 33 77U Will
Run Code Online (Sandbox Code Playgroud)
我喜欢做的是按ID按升序排序,然后得到Counter,SrvID的第一个值相同(如果有的话).
所以输出将是这样的:
ID Counter SrvID FirstName
-- ------ ----- ---------
1 34 66M James
2 45 75W Mike
3 55 45Q Jason
4 33 77U Will
Run Code Online (Sandbox Code Playgroud)
注意如何从列表中删除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()
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
var otherQuery = list1
.GroupBy(record => new {record.Counter, record.SrvID })
.Select(g => g.OrderBy(record => record.ID).First());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61589 次 |
| 最近记录: |