使用 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", "", ""}
它在相交时转义最后一个空字符串值。
设置方法(如 Intersect
或 Except
从每个集合中删除重复项。我假设你想要这样的东西:
var listCommon = list1.Where(list2.Contains);
效率不高。这可能是一个优化:
var l2Lookup = new HashSet<string>(list2);
var listCommon = list1.Where(l2Lookup.Contains);
这将起作用:
list1.Where(x=>list2.Contains(x))