2011-10-16 38 views
0

我已經有一個包含一些組的變量。我使用以下LINQ查詢生成該表:正在進行/修改LINQ查詢

var historyGroups = from payee in list 
           group payee by payee.Payee.Name into groups 
           orderby groups.Key         
           select new {PayeeName = groups.Key, List = groups }; 

現在我的historyGroups變量可以包含很多組。這些組中的每個組都有一個鍵,它是一個字符串,結果視圖按照該鍵排序。現在每個組中都有一個對應於密鑰的列表。裏面有列表有元素和每個元素是一個特定類型的對象。其中一個字段是System.DateTime類型。我想按日期排序內部列表

任何人都可以幫忙嗎?可能會修改上述查詢或變量historyGroups上的新查詢。

感謝

回答

1

這是我不太清楚,你要作爲排序依據是什麼(收款人類型定義缺失以及)

var historyGroups = from payee in list 
    group payee by payee.Payee.Name into groups 
    orderby groups.Key         
    select new { 
     PayeeName = groups.Key, 
     List = groups.OrderBy(payee2 => payee2.SomeDateTimeField) 
    }; 

是最直接的。

如果您真的只想按日期排序(而不是時間),請使用SomeDateTimeField.Date

在那個List裏面有元素,每個元素都是特定類型的對象。其中它的字段類型爲System.DateTime的

這導致的我也許(?)犯罪嫌疑人

List = groups.OrderBy(payee2 => payee2.ParticularTypedElement.DateTimeField) 

或者甚至

List = groups.OrderBy(payee2 => payee2.ObjectsOfParticularType 
     .OfType<DateTime>() 
     .FirstOrDefault() 
) 

我希望下次可以clarfy的問題好一點,所以我們不必猜得那麼多(並提出一個令人困惑的答案)

+0

謝謝你的時間和幫助。但爲什麼orderby groups.key是多餘的?我想通過payee.Payee.Name排序組的最終列表!其次,列表包含對象列表。該對象的其中一個字段是Date。此列表還包含收款人對象。謝謝。 – VVV

+0

@VVV:你的訂單是正確的:GroupBy默認不排序。 (固定)。我認爲我的回答概述了您需要的所有技術。如果您更新問題並顯示您正在使用的類型,我可以更新答案以解決明確的問題。直到那時,祝你好運! – sehe

+0

謝謝sehe!其實我是LINQ初學者!但是你的第一個查詢(帶有lambda的查詢)解決了這個問題。是的,其實這些對象中的每一個都包含多個字段,每個字段也是一個對象。這就是爲什麼我的措辭造成混亂。但是,謝謝你的幫助。問題解決了 :-) – VVV