检查字符串数组元素仅包含另一个数组中的元素

mat*_*key 5 c# linq

我有2个阵列

string[] allPossible = {"ID","Age","FirstName","LastName","Gender","Kudos"};
string[] enteredItems = {"Age", "LastName"};
Run Code Online (Sandbox Code Playgroud)

我想检查数组,enteredItems只包含在数组中找到的元素allPossible.我想用LINQ做这件事.

我看了

allPossible.Any(el => enteredItems .Contains(el));
Run Code Online (Sandbox Code Playgroud)

allPossible.Intersect(enteredItems).Any();
Run Code Online (Sandbox Code Playgroud)

相反,我循环通过enteredItems并使用Array.IndexOf(allPossible, x) == -1 return false.

返回的顶部数据样本将返回true ...但是如果在enteredItems数组中只有1个元素不在allPossible数组中,那么将出现false.即.

string[] allPossible = {"ID","Age","FirstName","LastName","Gender","Kudos"};
string[] enteredItems = {"Age", "Geeky"};
Run Code Online (Sandbox Code Playgroud)

因为''allIossible'元素中不存在'enteredItems'数组中的1个元素,所以会出错.

必须有LINQ查询才能执行此操作.

Tim*_*ter 16

使用 Enumerable.Except

bool allInEntered = !enteredItems.Except(allPossible).Any();
Run Code Online (Sandbox Code Playgroud)

  • 哇,这是一个甜蜜的衬垫. (2认同)