LINQ按日期将列表拆分为列表

时间:2013-11-27 22:09:12

标签: c# linq list

我有对象列表List<Payment>。我想获得按PaymentDate分组的列表列表。类似的东西:List<List<Payments>>其中列表的每个列表都有相同的日期(没有小时)。

3 个答案:

答案 0 :(得分:9)

DateTimeDate property

List<List<Payments>> result = payments 
    .GroupBy(p => p.PaymentDate.Date)
    .Select(g => g.ToList())
    .ToList();

答案 1 :(得分:7)

您可以按照其他人的建议使用GroupBy,也可以只创建Lookup

var lookup = payments.ToLookup(payment => payment.PaymentDate.Date);

您可以对此进行迭代(使用每个组的键作为日期)或使用索引器获取给定日期的所有付款。我通常发现查找比使用嵌套集合更清晰,例如List<List<...>>Dictionary<..., List<...>>

答案 2 :(得分:1)

您可以使用GroupBy()执行此操作。结果将是List<List<Payment>>类型。

var result = payments.GroupBy(payment => payment.PaymentDate.Date)
                     .Select(group => group.ToList())
                     .ToList()