Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c linq选择不以开头的单词_C#_Arrays_Linq - Fatal编程技术网

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

C# c linq选择不以开头的单词,c#,arrays,linq,C#,Arrays,Linq,考虑以下阵列: string[] bad_starts = { "a", "b", "col" }; string[] word_list = { "green", "blue", "color", "cyan", "maroon", "white", "black" }; 我需要选择word_列表中所有不以任何字符串开头的单词。 预期结果是: { "green", "cyan", "maroon", "white" }; 有解决办法吗?我们可以使用linq join吗?尝试以下方法 var

考虑以下阵列:

string[] bad_starts = { "a", "b", "col" };
string[] word_list = { "green", "blue", "color", "cyan", "maroon", "white", "black" };
我需要选择word_列表中所有不以任何字符串开头的单词。 预期结果是:

{ "green", "cyan", "maroon", "white" };
有解决办法吗?我们可以使用linq join吗?

尝试以下方法

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)));
你应该试试这个:

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

我喜欢“例外”选项

  var result = word_list.Except(word_list.Where(w => bad_starts.Any(b => w.StartsWith(b)))).ToList();  
在这个例子中,我说的是:

选择所有以bad_开头的任何字符开头的单词 在word_列表中查找包含这些单词的所有单词 在原始的“word_列表”中,排除所有这些匹配项的“Exception” 用简单的英语说: 选择除以指定字符开头的单词外的所有单词

另一种说法是:

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

+1您可能需要在此处进行不区分大小写的比较。@RedFilter添加了一个忽略大小写的版本。请对您的答案进行解释