【问题标题】:C# LINQ Contains method with two clausesC# LINQ 包含两个子句的方法
【发布时间】:2016-12-17 00:16:58
【问题描述】:

在 LINQ Contains 方法中使用两个子句的最佳实践方式是什么..

标题是字符串

这是我的 If 语句:

if (oWeb.ParentWeb.Title.Contains("Ricky") || oWeb.ParentWeb.Title.Contains("John"))

我需要这样的解决方案:

 if (oWeb.ParentWeb.Title.Contains("Ricky", "John"))

【问题讨论】:

  • 您正在寻找类似stackoverflow.com/questions/15235661/… 的东西?
  • 标题是字符串。是的
  • 如果你需要一个方法来做到这一点,然后编写一个方法来做到这一点。你写这样的方法有什么问题?
  • 您在使用 LINQ to SQL 吗?即你真的需要使用 LINQ 吗?

标签: c# linq contains


【解决方案1】:

由于Titlestring 这实际上与LINQ 无关,因为使用的Contains 方法是string 的实例方法。

假设你有更多的字符串要检查,你可以这样做:

var strings = new[] {"Ricky", "John"};
if (strings.Any(oWeb.ParentWeb.Title.Contains))
    // do something

roryap 使用正则表达式的答案似乎更可取(只要要检查的字符串数量不太大)。

【讨论】:

    【解决方案2】:

    我不认为 LINQ 是最好的选择。为什么不用正则表达式?

    Regex.IsMatch(oWeb.ParentWeb.Title, "ricky|john", RegexOptions.IgnoreCase);
    

    【讨论】:

    • 如果要检查的字符串数量不太大,比 LINQ 更好(不知道 OP 是否可能不止“ricky”和“john”)。
    【解决方案3】:

    Contains 只接受一个参数,所以你不能这样做。

    您可以创建一个项目数组,并用它检查收容:

    var titles = new[] {"Ricky", "John"};
    if (titles.Any(t => oWeb.ParentWeb.Title.Contains(t))) {
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 2010-10-01
      相关资源
      最近更新 更多