2013-11-27 98 views
4

我有對象列表List<Payment>。我想獲得按PaymentDate分組的列表清單。類似這樣的:List<List<Payments>>其中列表中的每個列表具有相同的日期(沒有小時)。LINQ按日期劃分成列表

回答

8

DateTimeDate property

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

LINQ很尷尬!調用.ToList()兩次? – codingbiz

+0

@codingbiz:是的,每個組別都有一份名單。 –

+3

@codingbiz:當你想要一個列表的列表,這是非常有道理的。 –

1

可以使用GroupBy()做到這一點。結果將是List<List<Payment>>

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

您可以使用GroupBy別人的建議,或者你可以創建一個Lookup

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

可以遍歷是(使用的日期各組的鍵)或獲取所有使用索引器支付給定日期的付款。我通常會發現查找比使用嵌套集合(如List<List<...>>Dictionary<..., List<...>>)更清晰。