C# 从 IList 中选择元素

标签 c# linq

我有一个对象列表,IList<O> . O有几个属性,但只有两个是相关的:DateDuration .

我想将列表“拆分”成几个列表,其中仅包含具有匹配日期和持续时间属性的对象。

例子:

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/

相关文章:

c# - WebReference 和源代码控制

c# - LINQ 中的查询比 SQL 更复杂

c# - 从具体化 'System.Int32' 类型到 'System.Double' 类型的指定转换无效

c# - 为什么我会收到类型不匹配错误,其中的类型在我的解决方案中的任何地方都看不到?

c# - 当我尝试重命名方法时,为什么 Visual Studio 告诉我有 "compiler generated references"?

c# - 从 C# 发送 OSC 消息包并在处理中接收得到奇怪的地址模式和错误

c# - 什么设置了 C# 中使用的 TLS 版本

c# - 为什么 IEnumerable 会丢失更新的数据?

c# - 将多个表从 SQL Server 导出到 XML 以进行还原

c# - 是否可以将其写为 linq 查询?