當運行下面的代碼時,我希望看到數字3,兩次,但顯然Except()方法只返回一次相同的元素。C#Enumerable.Except()只返回一次相同的元素
List<int> x = new List<int>() {1, 2, 3, 3};
List<int> y = new List<int>() { 1, 2 };
var z = x.Except(y); /* returns 3, only once */
在本文檔中,他們說的兩組差集被定義爲不顯示在所述第二組中的第一組的成員。沒有記錄,他們只返回一次重複項目。 https://msdn.microsoft.com/en-us/library/bb300779(v=vs.110).aspx
這是一個錯誤,還是我錯過了這裏的東西?
Expect()方法的代碼在這裏可用:https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,e289e6c98881b2b8。
他們不應該這樣做「if(!set.Contains(element))yield return element;」而不是「if(set.Add(element))yield return元素;」?
'set'的定義意味着它不包含重複項,所以這是按預期工作的。 –
該示例僅包含「2.3」一次? – TWT
@xanatos - 您鏈接的頁面在第一個枚舉中似乎只有唯一的項目('double [] numbers1 = {2.0,2.1,2.2,2.3,2.4,2.5};') – Corak