繁体   English   中英

如何在linq C#中计算字符串的字符串数组中的第一个字母

[英]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);
            }
        }

但是输出是

安迪1

安迪

亚瑟1

亚瑟

我想要 ;

A-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

因为我更喜欢方法语法而不是查询语法,所以这是您要这样做的方式:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM