【问题标题】:Use linq to check if an string value is in string array or List in C#使用 linq 检查字符串值是否在字符串数组或 C# 中的列表中
【发布时间】:2012-04-03 07:39:06
【问题描述】:

我使用以下方法检查数组或列表是否包含值:

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

if(Array.IndexOf(Names, target) > -1)
  //Do

那么有没有什么 linq 命令可以检查呢?

【问题讨论】:

  • 为什么需要 lambda 表达式?

标签: c# arrays list c#-4.0 lambda


【解决方案1】:

你是说 Linq 方法吗?

如果有,有一个:

Names.Contains(target)

注意这里不需要任何 lambda。

【讨论】:

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

【讨论】:

    【解决方案3】:

    这样的?

    Names.Any(n => Equals(n, target));
    

    【讨论】:

      【解决方案4】:
      string[] Names= { /* */};
      string target = "";
      
      if(Names.Contains(target))
        //Do
      

      【讨论】:

        猜你喜欢
        • 2021-11-26
        • 1970-01-01
        • 1970-01-01
        • 2013-01-09
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 2013-04-29
        • 2021-12-11
        相关资源
        最近更新 更多