C# 3.0 在使用linq to对象时

C# 3.0 在使用linq to对象时,c#-3.0,C# 3.0,可能重复: 我有一个保存状态的字符串变量。我想检查它是否等于这三个值中的一个。我希望它能像在SQL Server中一样工作。是否可以使用Linq to对象 我想要 if(str IN ("WA","CA","CO")) { } else { } 怎么做。我不想使用多个OR条件。不幸的是,没有IN,但您可以这样说 if (new[] { "WA", "CA", "CO" }.Contains(str)) { } 这似乎是错误的做法,但这是我们最好的选择。怎么样 if ((new stri

可能重复:

我有一个保存状态的字符串变量。我想检查它是否等于这三个值中的一个。我希望它能像在SQL Server中一样工作。是否可以使用Linq to对象

我想要

if(str IN ("WA","CA","CO"))
{

}
else
{

}

怎么做。我不想使用多个OR条件。

不幸的是,没有IN,但您可以这样说

if (new[] { "WA", "CA", "CO" }.Contains(str))
{
}
这似乎是错误的做法,但这是我们最好的选择。

怎么样

if ((new string [] {"WA", "CA", "CO"}).Contains(str))
{
}
else
{
}
这是在IEnumerable上使用.Contains()扩展方法-不是完整的LINQ,但应该可以工作。在生产代码中,您希望提取数组

new string[] {"WA", "CA", "CO"} 

输出到本地字段。

您可以创建一个扩展方法:

public static class Extensions {

   public static bool In<T>(this T value, params T[] options) : where T : IComparable<T> {
      foreach (T option in options) {
         if (value.CompareTo(option) == 0) return true;
      }
      return false;
   }

}
var result = someCollection.Where(x => x.Property.In(1,2,3));