var list1 = new[] { 1, 2, 3, 4, 5 };
var list2 = new int[] { };
var x = list2.Except(list1).ToList();
这不会返回list1中的所有元素,var x
实际上是一个空列表。根据{{3}},它应该返回list1中的所有元素。为什么不是,我错过了什么。
包含两个序列元素的集合差异的序列。
答案 0 :(得分:5)
它运作正常:返回list2
中list1
中不存在的所有项目。因为list2
已经为空,结果列表也是空的。
查看msdn上的 first
参数说明:
将返回
IEnumerable<T>
,其元素不在秒中。
答案 1 :(得分:2)
MSDN上的措辞可能令人困惑,但请参阅集合理论来理解它。
包含两个序列元素的设置差异的序列。
设定差异也称为complement,“是B中的元素集,但不是A”。
考虑到这一点,空数组.Except
任何东西仍然是一个空数组。
答案 2 :(得分:0)
你可能想要
var list1 = new[] { 1, 2, 3, 4, 5 };
var list2 = new int[] { };
var x = list2.Union(list1).ToList();
既然你提到了你的期待
应返回list1
中的所有元素