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));