在SQL中我可以寫匹配字符串: -C#簡明的方式在字符串
if (product_type in ('abc','def','ghi')) ...
如何我寫一個類似的簡潔「如果」語句在C#中?我不想預先創建一個命名的字符串列表變量。謝謝。
在SQL中我可以寫匹配字符串: -C#簡明的方式在字符串
if (product_type in ('abc','def','ghi')) ...
如何我寫一個類似的簡潔「如果」語句在C#中?我不想預先創建一個命名的字符串列表變量。謝謝。
您可以創建一個內聯的匿名集合並對其執行相同的方法調用,就像它被命名一樣。
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);
爲了簡化這個,你可以使用這一行。
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 (product_type.In("abc", "def", "ghi")) ...
我的身材d出來: -
if (new List<string> {"Fred", "Jim", "Harry"}.Contains("Jim"))
這是這裏兩個答案的重複!除了你已經硬編碼字符串。爲什麼不接受其中一個答案,而不是發佈這個問題。如果你看不到它們是相同的,那麼你需要學習更多。 –
謝謝Yvette。在我注意到有人回覆之前,我發佈了我的答案。 – andyabel
對不起,那麼苛刻。我們有時會看到一些瘋狂的東西。 –
的可能的複製[LINQ的列表中選擇對象,其中存在於(A,B,C)](http://stackoverflow.com/questions/14257360/linq-select-objects- in-list-where-in-in-abc) –
@ArturoMenchaca我不這是直接複製,因爲問題是如何做到這一點,而無需將其分配給變量。 –