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);
}
}但是输出是;
安迪1
安迪
亚瑟1
亚瑟
我想要;
A-1
安迪
亚瑟
阿什林
谢谢你的帮助。真为我糟糕的英语道歉。
发布于 2015-05-27 01:38:32
您不需要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发布于 2015-05-27 02:17:28
由于我更喜欢方法语法而不是查询语法,因此您可以这样做:
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);
}
}https://stackoverflow.com/questions/30465199
复制相似问题