使用 LINQ 获取两个数组中的公共值问题

本文关键字:问题 数组 两个 获取 LINQ 使用 | 更新日期: 2023-09-27 18:35:08

我有两个数组说

var list1 = string[] {"1", "2", "3", "4", "", ""};
var list2 = string[] {"2", "3", "4","",""};

当我尝试使用以下代码从这两个数组中获取常见项时

 var listCommon = list1.Intersect(list2);

它给了我这样的结果

string[] {"2", "3", "4", ""}

但我希望它应该像这样返回

string[] {"2", "3", "4", "", ""}

它在相交时转义最后一个空字符串值。

使用 LINQ 获取两个数组中的公共值问题

设置方法(如 IntersectExcept 从每个集合中删除重复项。我假设你想要这样的东西:

var listCommon = list1.Where(list2.Contains);

效率不高。这可能是一个优化:

var l2Lookup = new HashSet<string>(list2);
var listCommon = list1.Where(l2Lookup.Contains);

这将起作用:

list1.Where(x=>list2.Contains(x))