2015-05-26 79 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); 
    } 
} 
相关问题