C#在字符串列表中匹配字符串的简洁方法

时间:2016-05-16 16:22:18

标签: c# string list

在SQL中我可以写: -

if (product_type in ('abc','def','ghi')) ...

如何在C#中编写一个类似简洁的'if'语句?我不想要预先创建一个命名字符串列表变量。感谢。

4 个答案:

答案 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"))