2015-05-26 170 views
0
var query = from str in strdizi 
        where str.StartsWith(str.Substring(0, 1)) 
        orderby str 
        group str by str.Substring(str.LastIndexOf(Convert.ToChar(str.Substring(0, 1)))) 
         into ws 
         where ws.Count() >= 1 
         select ws; 
     foreach (var item in query) 
     { 
      Console.WriteLine(item.Key + " " + item.Count()); 
      foreach (var items in item) 
      { 
       Console.WriteLine(items); 
      } 
     } 

但輸出是;如何計算字符串數組中字符串的第一個字母C#

安迪1

安迪

亞瑟1

亞瑟

我想;

A - 1

安迪

亞瑟

Ashlynn

感謝您的幫助。 Sory爲我的壞英語。

+0

是否有一個具體的原因,你必須這樣做LINQ?正常的循環訪問和更新字典可能會更高性能,更容易理解和維護... – mcating

+0

ANNA的價值是什麼? 1或4? –

回答

1

你不需要where條件,它足以組由串數據:

var strdizi = new string [] {"Andy", "Arthur", "Ashlynn", "Ben", "Chris"}; 
var query = from str in strdizi 
      group str by str.Substring(0, 1) 
      into ws 
      where ws.Count() >= 1 
      select ws; 

foreach (var item in query) 
{ 
    Console.WriteLine(item.Key + " " + item.Count()); 
    foreach (var items in item) 
    { 
     Console.WriteLine(items); 
    } 
} 

這使結果:

A 3 
Andy 
Arthur 
Ashlynn 
B 1 
Ben 
C 1 
Chris 
+0

謝謝你dotnetom。有效。 –

0

正如我更喜歡查詢方法的語法語法,這是你將如何做到這一點:

var strdizi = new string [] {"Andy", "Arthur", "Ashlynn", "Ben", "Chris"}; 
var query = strdizi.GroupBy(g=>g.Substring(0,1)); 
foreach (var item in query) 
{ 
    Console.WriteLine(item.Key + " " + item.Count()); 
    foreach (var items in item) 
    { 
     Console.WriteLine(items); 
    } 
} 
相關問題