2013-09-10 296 views
5

我有2個陣列檢查字符串數組元素只包含元素的另一個數組

string[] allPossible = {"ID","Age","FirstName","LastName","Gender","Kudos"}; 
string[] enteredItems = {"Age", "LastName"}; 

我想檢查數組enteredItems只包含數組 allPossible中發現的元素。我想用LINQ來做到這一點。

我已經看過

allPossible.Any(el => enteredItems .Contains(el)); 

allPossible.Intersect(enteredItems).Any(); 

相反,我環路直通的enteredItems和使用Array.IndexOf(allPossible, x) == -1 return false

頂部數據樣本將返回true ... 但是,如果只輸入的項目數組中的1個元素不在allPossible數組中,那麼將出現錯誤。即。因爲「enteredItems」陣列中1個元件不存在於「allPossible」 元件存在

string[] allPossible = {"ID","Age","FirstName","LastName","Gender","Kudos"}; 
string[] enteredItems = {"Age", "Geeky"}; 

會是假的。

必須有一個LINQ查詢來執行此操作。

回答

16

使用Enumerable.Except

bool allInEntered = !enteredItems.Except(allPossible).Any(); 
+2

哇,這是一個甜蜜的一行。 – crush

相關問題