我需要一个linq查询来获取唯一的对象列表,按Dep分组它们并获得具有最高进度的值.我有一个对象列表,如下所示:
List<SomeObjects> lstObjects:
lstObjects[0] - Dep: Marketing Comp:ABC Progress: 1
lstObjects[1] - Dep: Sales Comp:ABC Progress: 2
lstObjects[2] - Dep: Marketing Comp:DEF Progress: 2
lstObjects[3] - Dep: Marketing Comp:DEF Progress: 3
lstObjects[4] - Dep: Sales Comp:ABC Progress: 1
lstObjects[5] - Dep: Marketing Comp:ABC Progress: 2
lstObjects[6] - Dep: Marketing Comp:ABC Progress: 1
lstObjects[7] - Dep: Marketing Comp:ABC Progress: 1
Run Code Online (Sandbox Code Playgroud)
正如您所见,Dep:Marketing Comp:ABC,通过不同的Progress进行重复:我必须获得具有最高进度的对象的唯一列表.
Eg: lstObjects[0] - Dep: Marketing Comp:ABC Progress: 1
lstObjects[5] - Dep: Marketing Comp:ABC Progress: 2
Here I should get, lstObjects[5] - Dep: Marketing Comp:ABC Progress: 2
In, lstObjects[2] - Dep: Marketing Comp:DEF Progress: 2
lstObjects[3] - Dep: Marketing Comp:DEF Progress: 3
In this I should get lstObjects[3] - Dep: Marketing Comp:DEF Progress: 3
In, lstObjects[1] - Dep: Sales Comp:ABC Progress: 2
lstObjects[4] - Dep: Sales Comp:ABC Progress: 1
In this I should get lstObjects[3] - Dep: Sales Comp:ABC Progress: 2
Finally my list should be:
1)Dep: Marketing Comp:ABC Progress: 2
2)Dep: Marketing Comp:DEF Progress: 3
3)Dep: Sales Comp:ABC Progress: 2
Run Code Online (Sandbox Code Playgroud)
提前致谢.
你可以使用GroupByon Dep和Comp.
var result = lstObjects
.GroupBy(x=> new {x.Dep, x.Comp})
.Select(x=> new
{
Department = x.Key.Dep,
Comp = x.Key.Comp ,
Progress = x.Max(x => m.Progress)
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |