2012-04-01 59 views
0

linq集合由SearchResult對象組成。使用linq中的組來選擇聚合記錄

SearchResult都包含:ID(數字),類別名稱(字符串)

我想使用LINQ的所有累積類別(即,如果有與類別至少一個搜索結果來選擇進入一個新的集合A然後在集合中包含類別A)。

如果可能,按字母順序對結果進行排序。

實施例:

搜索結果:

1,計算機

2,IT

3,金融

4,金融

5,新聞

6,天氣

7,IT

8,時尚

產生的集合:(計算機,服裝,金融,IT,新聞,天氣)。

這裏是我到目前爲止有:

SearchResultsCollection是IEnumerable的

var categs = SearchResultsCollection.GroupBy(f => GetCategory(f)) 
      .Select(GetCategory(f)).ToList(); 

回答

2

您可以GroupBy在這種情況下,但因爲你是投射到反正基本屬性是沒有必要的 - 組第一,選擇一批重點順序:

var categs = SearchResultsCollection.GroupBy(f => f.categoryName) 
            .Select(g => g.Key) 
            .OrderBy(f => f) 
            .ToList(); 

或更容易使用Distinct()

var categs = SearchResultsCollection.Select(f=> f.categoryName) 
            .Distinct() 
            .OrderBy(c => c) 
            .ToList();