在SQL中我可以写: -
if (product_type in ('abc','def','ghi')) ...
如何在C#中编写一个类似简洁的'if'语句?我不想要预先创建一个命名字符串列表变量。感谢。
答案 0 :(得分:1)
为了简化这一点,你可以使用这一行。
if (new[] {"abc", "def", "ghi"}.Contains(product_type)) //...
不要忘记添加声明
using System.Linq;
答案 1 :(得分:0)
您可以内联创建一个匿名集合,并对其执行相同的方法调用,就像它被命名一样。
var product_type = "abc";
// Array
var result = new [] {"abc", "def", "ghi"}.Contains(product_type); // result == true.
// List
var listResult = new List<string> {"abc", "def", "ghi"}.Contains(product_type);
答案 2 :(得分:0)
...或者您可以创建一个扩展程序以使In for everything
public static bool In<T>(this T obj, IEqualityComparer<T> comparer, params T[] list)
{
if (comparer == null)
return list.Contains(obj);
else
return list.Contains(obj, comparer);
}
public static bool In<T>(this T obj, params T[] list)
{
return In(obj, null, list);
}
所以你可以这样写:
if ( product_type.In( "abc", "def", "ghi" ) ) ...
答案 3 :(得分:0)
我明白了: -
if (new List<string> {"Fred", "Jim", "Harry"}.Contains("Jim"))