考虑这些数组:
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吗?
答案 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();