Intersect可用于查找两个集合之间的匹配,如下所示:
// Assign two arrays.
int[] array1 = { 1, 2, 3 };
int[] array2 = { 2, 3, 4 };
// Call Intersect extension method.
var intersect = array1.Intersect(array2);
// Write intersection to screen.
foreach (int value in intersect)
{
Console.WriteLine(value); // Output: 2, 3
}
Run Code Online (Sandbox Code Playgroud)
然而,我想要实现的是相反的,我想列出比较两个集合时缺少的项目:
// Assign two arrays.
int[] array1 = { 1, 2, 3 };
int[] array2 = { 2, 3, 4 };
// Call "NonIntersect" extension method.
var intersect = array1.NonIntersect(array2); // …Run Code Online (Sandbox Code Playgroud) 用户界面允许用户选择一个或多个标签。我想选择所有具有用户输入的所有标记相关联的节点,而不仅仅是单个标记。
public JsonResult SearchNodesByTags(string[] tags)
{
var dbTags = _DbContext.Tags.Where(t => tags.Contains(t.DisplayName)).ToList();
var nodes = _DbContext.Nodes.Where(n => n.Tags.Intersect(dbTags).Any());
// Error about intersection with non primitive
return Json(nodes);
}
Run Code Online (Sandbox Code Playgroud)