Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用字符串数组生成字符数组_C#_Linq_Char - Fatal编程技术网

C# 用字符串数组生成字符数组

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());

这里有一个数组。我想按照它们的第一个字母对它们进行分组,然后取出以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());
我这里的问题是在我的最后一句话中,我无法得到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