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

Ell*_*bar 4 c# linq list

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

Tim*_*ter 9

DateTime有一个Date属性:

List<List<Payments>> result = payments 
    .GroupBy(p => p.PaymentDate.Date)
    .Select(g => g.ToList())
    .ToList();
Run Code Online (Sandbox Code Playgroud)

  • @codingbiz:当你想要一个列表列表时,这是完全合理的. (3认同)

Jon*_*eet 7

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

var lookup = payments.ToLookup(payment => payment.PaymentDate.Date);
Run Code Online (Sandbox Code Playgroud)

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