使用linq检查字符串值是否在字符串数组中或C#中的List

Sae*_*eid 3 c# arrays lambda list c#-4.0

我使用以下内容检查数组或List包含一个值:

string[] Names= { /* */};
string target = "";

if(Array.IndexOf(Names, target) > -1)
  //Do
Run Code Online (Sandbox Code Playgroud)

那么有没有linq命令来检查它?

Fal*_*nwe 13

你的意思是Linq方法吗?

如果是这样,有一个:

Names.Contains(target)
Run Code Online (Sandbox Code Playgroud)

注意这里不需要任何lambda.

  • @Killercam:实际上,我怀疑编译器会生成与Names.Any(s => s == target)相同的IL,因为没有更好的方法可以在Array中找到匹配项.如果Names不是一个数组,而是一些其他类型的IEnumerable,它具有更高效的搜索算法,那么contains实际上会更高效. (3认同)

Wik*_*hla 11

   Names.Any( s => s == target );
Run Code Online (Sandbox Code Playgroud)