5

我有两个数组说

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", "", ""}

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

4

2 回答 2

9

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

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

这不是那么有效。这可能是一个优化:

var l2Lookup = new HashSet<string>(list2);
var listCommon = list1.Where(l2Lookup.Contains);
于 2013-10-11T11:39:56.623 回答
7

这将起作用:

list1.Where(x=>list2.Contains(x))
于 2013-10-11T11:41:19.063 回答