首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字符串数组中计算linq C#中字符串的第一个字母

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

Stack Overflow用户
提问于 2015-05-27 01:33:20
回答 2查看 142关注 0票数 0
代码语言:javascript
复制
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

安迪

亚瑟

阿什林

谢谢你的帮助。真为我糟糕的英语道歉。

EN

回答 2

Stack Overflow用户

发布于 2015-05-27 01:38:32

您不需要where条件,按子字符串对数据进行分组就足够了:

代码语言:javascript
复制
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);
    }
}

这将给出结果:

代码语言:javascript
复制
A 3
Andy
Arthur
Ashlynn
B 1
Ben
C 1
Chris
票数 1
EN

Stack Overflow用户

发布于 2015-05-27 02:17:28

由于我更喜欢方法语法而不是查询语法,因此您可以这样做:

代码语言:javascript
复制
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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30465199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档