使用LINQ在两个数组问题中获取常见值

时间:2013-10-11 11:35:59

标签: c# arrays winforms linq

我有两个阵列说

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

交叉时转义最后一个空字符串值。

2 个答案:

答案 0 :(得分:9)

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

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

效率不高。 可以进行优化:

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

答案 1 :(得分:7)

这将有效:

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