用字符串数组制作一个char数组

时间:2017-04-27 17:18:57

标签: 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());

我的问题在于我的最后一句话,我不能得到x.Value,这很奇怪,因为它属于igroup

另外我想得到一个字符数组答案,如{a,a,a,b,b,b,b,c}

2 个答案:

答案 0 :(得分:0)

通过检查每个字符串的第一个字符,您可以在没有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();

小提琴here

答案 1 :(得分:0)

试试这个:

var aq = ab.Where(it => it.StartsWith("a") || it.StartsWith("b"))
           .SelectMany(it => it.ToCharArray());

首先,您选择以' a'开头的字符串。或者'#"然后将它们转换为char数组并连接它们。