2011-09-18 107 views
7

獲取值的總數我有一個ClassLINQ - 從嵌套列表

public class Company 
{ 
    public int id { get; set; } 
    public string title { get; set; } 
    public string address { get; set; } 
    public string city { get; set; } 
    public string zip { get; set; } 
    public List<string> phones { get; set; } 
    public List<string> categories { get; set; } 
} 

,我有一個Generic List其中包含Class

public List<Company> Companies = new List<Company>();

我想要做的兩件事:

  1. 得到一個明確的類別列表
  2. 類別

得到公司的總數,我想我管理的第一件事:

Companies.SelectMany(c => c.categories).Distinct() 請告訴我,如果你認爲有什麼不妥。

我嘗試了第二步: Companies.SelectMany(c => c.categories).Where(c=>c == Category).Count() 但我不確定這是否是正確的。

回答

5
  1. 正確

  2. 您需要拼合列表到(公司類別)對,然後按類別:

    from company in Companies 
    from category in company.Categories 
    group company by category into g 
    select new { Category = g.Key, Count = g.Count() } 
    

    編輯:如果你想找出有多少公司在一個給定的類別,你可以寫

    Companies.Count(c => c.Categories.Contains(categoryName)) 
    
+0

一家公司可以有更多的1個類別,這是我需要的數量,有多少公司在特定類別下 – Dementic

+0

@Demetic:看我的編輯 – SLaks

+0

它仍然給我與我在哈桑的評論上寫的相同的結果。 – Dementic

3
Companies 
    .SelectMany(c => c.categories) 
    .GroupBy(c => c) 
    .Select(g => new 
     { 
      Cateogry = g.Key, 
      Count = g.Count() 
     }); 

如果你想爲特定的類別,然後將您的查詢是正確的了。

+0

請參閱編輯的問題。 – Dementic

+0

@Dementic我的答案給你你想要的。試試吧, –

+0

好吧,因爲我需要指定類別,我不認爲它確實如此。 – Dementic