Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在字符串列表中匹配字符串的简洁方法_C#_String_List - Fatal编程技术网

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

C#在字符串列表中匹配字符串的简洁方法,c#,string,list,C#,String,List,在SQL中,我可以编写:- if (product_type in ('abc','def','ghi')) ... 我怎样才能用C#写一个同样简洁的“if”语句?我不想预先创建一个命名字符串列表变量。谢谢。您可以内联创建一个匿名集合,并对其执行与命名相同的方法调用 var product_type = "abc"; // Array var result = new [] {"abc", "def", "ghi"}.Contains(product_type); // result == t

在SQL中,我可以编写:-

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

我怎样才能用C#写一个同样简洁的“if”语句?我不想预先创建一个命名字符串列表变量。谢谢。

您可以内联创建一个匿名集合,并对其执行与命名相同的方法调用

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);
var产品类型=“abc”;
//排列
var result=new[]{“abc”、“def”、“ghi”}.Contains(产品类型);//结果==真。
//名单
var listResult=新列表{“abc”、“def”、“ghi”}.Contains(产品类型);

要简化此操作,请使用此行

if (new[] {"abc", "def", "ghi"}.Contains(product_type)) //...
别忘了添加声明

using System.Linq;

…或者,您可以创建一个扩展,以使所有内容都具有

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 (new List<string> {"Fred", "Jim", "Harry"}.Contains("Jim"))
if(新列表{“Fred”、“Jim”、“Harry”}.Contains(“Jim”))

可能重复@Arturomenchaa我不认为这是一个直接重复,因为问题是如何在不将其分配给变量的情况下进行复制。谢谢Yvette。在我注意到有人回复之前,我发布了我的答案。
if (new List<string> {"Fred", "Jim", "Harry"}.Contains("Jim"))