2013-09-10 200 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

相关问题