C# 用字符串数组生成字符数组
这里有一个数组。我想按照它们的第一个字母对它们进行分组,然后取出以a和b开头的字符串,对它们进行char数组 以下是我的尝试:C# 用字符串数组生成字符数组,c#,linq,char,C#,Linq,Char,这里有一个数组。我想按照它们的第一个字母对它们进行分组,然后取出以a和b开头的字符串,对它们进行char数组 以下是我的尝试: string[] ab = { "aa", "ab", "bb", "bc", "cd", "ce" }; var aq = ab.GroupBy(i => i[0]).Where(x => x.Key == 'a' && x.Key == 'b').SelectMany(x => x.Value.ToCharArray());
string[] ab = { "aa", "ab", "bb", "bc", "cd", "ce" };
var aq = ab.GroupBy(i => i[0]).Where(x => x.Key == 'a' && x.Key == 'b').SelectMany(x => x.Value.ToCharArray());
我这里的问题是在我的最后一句话中,我无法得到x.值,这很奇怪,因为它属于igroup
另外,我还想得到一个字符数组的答案,比如{a,a,a,b,b,b,c}通过检查每个字符串的第一个字符,您可以在没有
GroupBy()
的情况下完成您想要的任务:
var result = ab
.Where(x => x.ToLower()[0] == 'a'
|| x.ToLower()[0] == 'b')
.SelectMany(x => x)
.ToArray();
如果您的列表中有任何null
值,请不要将其中断
您还可以使用StartsWith()
扩展名并传入布尔参数以忽略大小写以及区域性信息:
var result = ab
.Where(x => x.StartsWith("a", true, System.Globalization.CultureInfo.CurrentCulture)
|| x.StartsWith("b", true, System.Globalization.CultureInfo.CurrentCulture))
.SelectMany(x => x)
.ToArray();
小提琴试试这个:
var aq = ab.Where(it => it.StartsWith("a") || it.StartsWith("b"))
.SelectMany(it => it.ToCharArray());
首先选择以“a”或“b”开头的字符串,然后将它们转换为字符数组并将它们连接起来。您不需要
GroupBy
来完成此操作。任何输入都将不胜感激!我也想了解这个问题。你说的“以a和b开头的字符串”是什么意思?字符串不能以A和b开头。A{A,A,b,b,b,c}的字符数组来自{“aa”,“ab”,“bb”,“bc”}类似的东西:ab.Where(s=>!string.IsNullOrEmpty(s)&(s[0]='A'.[124; s[0]='b')。选择many(s=>s)。ToArray()
如果列表中有空字符串怎么办?空字符串应该可以,但是,null将破坏索引器。然而,同样的问题仍然存在于OP的代码中,因此我假设OP在应用此逻辑之前过滤空值。.tocharray()
是冗余的,可以删除<代码>字符串是IEnumerable