c#linq选择不以。开头的单词

时间:2014-01-27 19:49:08

标签: c# arrays linq

考虑这些数组:

string[] bad_starts = { "a", "b", "col" };
string[] word_list = { "green", "blue", "color", "cyan", "maroon", "white", "black" };

我需要选择word_list中所有不以bad_starts中的任何字符串开头的字词。 预期结果是:

{ "green", "cyan", "maroon", "white" };

任何解决方案?我们可以使用linq join吗?

3 个答案:

答案 0 :(得分:11)

尝试以下

var r = word_list.Where(x => !bad_starts.Any(b => x.StartsWith(b)));

不区分大小写的版本

var r = word_list.Where(x => 
  !bad_starts.Any(b => x.StartsWith(b, StringComparison.OrdinalIgnoreCase)));

答案 1 :(得分:1)

你应该试试这个:

var result = word_list.Where(x=>!bad_starts.Any(y => x.StartsWith(y))).ToList(); 

答案 2 :(得分:0)

我喜欢“除外”选项

var result = word_list.Except(word_list.Where(w => bad_starts.Any(b => w.StartsWith(b)))).ToList();