我有对象列表List<Payment>
。我想获得按PaymentDate
分组的列表列表。类似的东西:List<List<Payments>>
其中列表的每个列表都有相同的日期(没有小时)。
答案 0 :(得分:9)
DateTime
有Date
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()