我有两个阵列说
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", "", ""}
交叉时转义最后一个空字符串值。
答案 0 :(得分:9)
设置Intersect
或Except
等方法可以删除每个集合中的重复项。我假设你想要这样的东西:
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))