2016-05-16 63 views
1

在SQL中我可以寫匹配字符串: -C#簡明的方式在字符串

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

如何我寫一個類似的簡潔「如果」語句在C#中?我不想預先創建一個命名的字符串列表變量。謝謝。

+0

的可能的複製[LINQ的列表中選擇對象,其中存在於(A,B,C)](http://stackoverflow.com/questions/14257360/linq-select-objects- in-list-where-in-in-abc) –

+0

@ArturoMenchaca我不這是直接複製,因爲問題是如何做到這一點,而無需將其分配給變量。 –

回答

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

爲了簡化這個,你可以使用這一行。

if (new[] {"abc", "def", "ghi"}.Contains(product_type)) //... 

不要忘記添加聲明

using System.Linq; 
0

...或者你可以創建一個擴展有在一切

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")) ... 
0

我的身材d出來: -

if (new List<string> {"Fred", "Jim", "Harry"}.Contains("Jim")) 
+2

這是這裏兩個答案的重複!除了你已經硬編碼字符串。爲什麼不接受其中一個答案,而不是發佈這個問題。如果你看不到它們是相同的,那麼你需要學習更多。 –

+0

謝謝Yvette。在我注意到有人回覆之前,我發佈了我的答案。 – andyabel

+0

對不起,那麼苛刻。我們有時會看到一些瘋狂的東西。 –