2011-06-12 48 views
0

我有日期時間值(例如,12/01/2010 10:10:222 ..)我如何以降序顯示年份?例如,2011年,2010年,2009年,2008年等。我需要按照年份部分進行分組並返回。我實際上需要返回年份和名稱。我需要使用其他功能的名稱,這就是爲什麼我需要2個值。如何使用Linq命令按組排序並按結果排序

感謝您的幫助......

+0

你是什麼意思「返回年份和名稱」?如果多個條目具有相同的名稱會怎麼樣? – 2011-06-12 11:16:41

回答

2

這真不明白你的意思,但你威力只是想是這樣的:

var query = collection.GroupBy(record => record.DateProperty.Year) 
         .OrderBy(group => group.Key); 

如果這不是你所追求的,請提供更多細節 - 最好是一些樣本輸入和所需的輸出。

如果只想從每組中的一個條目,你是樂於接受任何一個,得到的名字,而你只需要一年,你可以這樣做:

var query = collection.GroupBy(record => record.DateProperty.Year) 
         .Select(g => new { Year = g.Key, Name = g.First().Name }) 
         .OrderBy(x => x.Year); 
2

我會使用DISTINCT和OrderByDescending擴展:

var years = IQueryableObject 
       .Distinct(x => x.Year).OrderByDescending(x => x.Year).ToList(); 
+1

區別不需要一個參數來說明如何區分它,所以這不會被編譯。 – 2011-06-12 11:16:12

+0

這對我有效:var sortedList =(從newsPressReleaseGenericList中的p orderby p.ReleaseDate.Year降 選擇新的{ReleaseDate = p.ReleaseDate.Year})。Distinct(); – obautista 2011-06-12 14:56:43