[英]How to Count in a string array for string First letter in linq C#
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);
}
}
but the output is; 但是输出是
Andy 1 安迪1
Andy 安迪
Arthur 1 亚瑟1
Arthur 亚瑟
I want ; 我想要 ;
A - 1 A-1
Andy 安迪
Arthur 亚瑟
Ashlynn 阿什琳
Thanks for helping. 感谢您的帮助。 Sory for my bad english.
对不起,我的英语不好。
You don't need the where
condition, it is enough to group the data by substring: 您不需要
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);
}
}
This gives the results: 结果如下:
A 3
Andy
Arthur
Ashlynn
B 1
Ben
C 1
Chris
As I prefer the method syntax over query syntax, this is how you would do it: 因为我更喜欢方法语法而不是查询语法,所以这是您要这样做的方式:
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.