Linq排序List <string>并只写一些字符

时间:2018-12-08 19:56:29

标签: c# linq sorting

我的问题是:我正在制作一个程序,用户可以输入自己想要的任何单词,直到写完END。

所有单词都进入相同的列表字符串

,然后从该列表中我写:

1)以“ A”开头的单词

2)以“ B”开头的单词

3)以“ C”开头的单词

4)换句话说:

也许使用linq

如果有人对初学者有一些不太复杂的解决方案,我将非常感激。 我试图找到其他没有成功的答案。

2 个答案:

答案 0 :(得分:0)

您可以生成模式,然后按首字母对匹配项进行分组。

// Generate pattern: A|B|C
var check_words = string.Join("|", "A", "B", "C");
var re = new Regex($"^{check_words}");
// Test strings
var words = new List<string> { "Apple", "Banana", "Cucumber", "Cherry", "Watermelon" };
var filtered =
    words
    .Where(word => re.IsMatch(word)) //Filter words
    .GroupBy(g => g.Substring(0, 1)); //Group by first letter

// Print groups
foreach(var group in filtered)
{
    WriteLine($"Group: {group.Key}");
    foreach(var x in group)
    {
        WriteLine($"\t{x}");
    }
}

/*
Output:

Group: A
        Apple
Group: B
        Banana
Group: C
        Cucumber
        Cherry
*/

答案 1 :(得分:0)

var words = List();  var aWords = words.Where(w => w.ToUpper()。StartsWith(“ A”))。ToList();

这对我有用,谢谢@LasseVågsætherKarlsen

您能帮我怎么说我要不要以A,B或C开头的所有其他单词吗? 通过linq一起写?