我需要对列表做4件事。
我做到了如下。但是我不知道该如何表达自己的意思 需要类似的东西:
where o.ToUpper().StartWith(o!=(A) StartWith(o!=(B) StartWith(o!=(C))
有什么办法吗?
想象一下,用户输入了5个单词:飞机,球,雪茄,梨,马桶,而我想像这样写:A:飞机; B:球; C:雪茄;其他词:梨,马桶
var listA =
(from a in words
where a.ToUpper().StartsWith("A")
select a).ToList();
foreach (string i in listaA)
{
Console.WriteLine(i);
}
答案 0 :(得分:0)
您可以尝试以下方法:
var wordsStartingWithA = words.Where(i => i.ToUpper().StartsWith("A")).ToList();
// same for B & C
var otherWords = words.Where(i => !new[] { "A", "B", "C" }.Any(i.ToUpper().StartsWith)).ToList();
编辑
考虑之后,我认为这是一种更清洁的方法:
var wordGroups = words.GroupBy(i => char.ToUpper(i[0])).ToDictionary(i => i.Key, j => j.ToList());
var wordsStartingWithA = wordGroups['A'];
// same for B & C
var otherWords = wordGroups.Where(i => !new[] { 'A', 'B', 'C' }.Any(i.Key.Equals))
.SelectMany(i => i.Value).ToList();
通过这种方式,所有单词都根据其首字母进行分组,因此您可以通过执行wordGroups['Z']
来获取以 Z 开头的所有单词。