2013-07-24 17 views
4

在這裏我需要得到名字Murugan的總數,我的輸出應該是「2」。如何編寫LINQ查詢該要寫一個linq查詢來獲得選定的名字計數

的Linq:

Person[] names = {new Person { Name = "Murugan", Money = 15000 }, 
           new Person{Name="Vel",Money=17000}, 
           new Person{Name="Murugan",Money=1000}, 
            new Person{Name="Subramani",Money=18000}, 
           new Person{Name="Vel",Money=2500}}; 
var result = from val in names 
     where val.Name == "Murugan" 
     select val; 
Console.WriteLine(result); 
Console.ReadLine(); 

回答

11

試試這個:

var count = names.Count(x=>x.Name=="Murugan"); 
+0

'()'不需要.ToList。 – Tyler

+0

這符合規定的要求,但一組可能會提供更有用的結果。 – asawyer

+1

我刪除了我的答案。我以爲他想要給那個人一筆錢,我的壞......你的回答是正確的,也是最短的。 :) – Abbas

6

您可以使用此,

var result = (from val in names 
          where val.Name == "Murugan" 
          select val).Count(); 
+1

版本與'Count(x => x.Name ==「Murugan」)'是更短的版本:) – wudzik

2

嘗試:

Person[] names = { new Person { Name = "Murugan", Money = 15000 }, 
        new Person{Name="Vel",Money=17000}, 
        new Person{Name="Murugan",Money=1000}, 
        new Person{Name="Subramani",Money=18000}, 
        new Person{Name="Vel",Money=2500} }; 

var result = (from val in names 
       where val.Name == "Murugan" 
       select val).ToList(); 

Console.WriteLine(result.Count); 
Console.ReadLine(); 
+1

-1:他希望列表中給定名稱的出現次數。您只是將IEnumerable 轉換爲列表。 – Abbas

+0

然後使用result.Count來獲取值,並且他指定了他想查詢的名稱(這裏我需要得到Murugan名字的總數,我的輸出應該是「2」)。試試代碼。 – christiandev

+0

沒有看到'result.Count'那裏,我的壞!雖然wudziks答案更簡單;) – Abbas

1
var result = (from val in names 
         where val.Name == "Murugan" 
         select val).Count(); 

LINQ返回的IEnumerable具有計數()

+0

在手機上打字,所以沒有意識到已經有一個答案 – whoisthis

4

您可以使用此:

var result = from val in names 
       where val.Name == "Murugan" 
       group val by val.Name into g 
       select new { Count = g.Count()     
       }; 
+1

這不是一點點矯枉過正? :) – Abbas

+2

它可能是,但它提供了更多的可能性來添加其他信息,如總和,平均,...金錢。畢竟這取決於上下文 – Swift

+1

你是對的,但只有一個計數它是矯枉過正:D – Abbas