我有一个对象列表,IList<O>
.
O
有几个属性,但只有两个是相关的:Date
和 Duration
.
我想将列表“拆分”成几个列表,其中仅包含具有匹配日期和持续时间属性的对象。
例子:
0- Date==1, Duration==7 1- Date==1, Duration==7 2- Date==2, Duration==7 3- Date==2, Duration==7 4- Date==2, Duration==14 5- Date==2, Duration==14
期望的结果(IList
0- 0- Date==1, Duration==7 1- Date==1, Duration==7 1- 0- Date==2, Duration==7 1- Date==2, Duration==7 2- 0- Date==2, Duration==14 1- Date==2, Duration==14
我知道这可以通过一些 LINQ 选择来完成,但我不确定如何做。
最佳答案
您可以使用以下内容:
var query =
from item in list
group item by new { item.Date, item.Duration } into g
select g.toList();
var result = query.toList();
这将创建一个匿名类,其中包含您要作为分组依据的属性。然后它将 IGrouping
扩展为原始类型的 List
。然后运行查询以生成外部 List
。
关于C# 从 IList 中选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2616891/