在C#語言的編程開發中,針對List集合的運算有時候需要計算兩個List集合的差集數據,集合的差集是取在該集合中而不在另一集合中的所有的項。A集合針對B集合的差集數據指的是所有在A集合但不在B集合的元素。在C#語言中可以使用Except方法來計算兩個List集合的差集數據,簡單快捷只需要一條語句。 ...
在C#語言的編程開發中,針對List集合的運算有時候需要計算兩個List集合的差集數據,集合的差集是取在該集合中而不在另一集合中的所有的項。A集合針對B集合的差集數據指的是所有在A集合但不在B集合的元素。在C#語言中可以使用Except方法來計算兩個List集合的差集數據,簡單快捷只需要一條語句。
Except方法的使用格式為:List1.Except(List2)。List1和List2代表同一類型的類型的List集合數據
(1)針對值類型的集合數據,如果兩個集合中的元素的值相同,則會被排除。
List<int> list1 = new List<int> { 1, 2, 3, 4 }; List<int> list2 = new List<int> { 3, 4, 5, 6 }; List<int> chajiList = list1.Except(list2).ToList();
最後運算得到的結果集為:chajiList集合中包含2個元素,為1和2。
(2)針對引用類型,包括用戶自定義的類對象的List集合。判斷差集的依據是判斷元素的對象引用是否相同,如果相同則被排除出去,否則即使所有的對象屬性值一致,也屬於兩個不同的對象,不會被排除。
舉例:list1和list2都是List<TestModel>類型的對象List集合。如果list1和list2添加元素的方式如下:
list1.Add(new TestModel() { Index = 1, Name = "TestModel1" }); list1.Add(new TestModel() { Index = 2, Name = "TestModel2" }); list2.Add(new TestModel() { Index = 1, Name = "TestModel1" }); list2.Add(new TestModel() { Index = 2, Name = "TestModel2" });
雖然上述兩個語句看起來list1和list2集合的內部元素值全部相同,但list1針對於list2的差集運算:list1.Except(list2).ToList()最後得到的結果集中依舊包含Index為1和2的兩個對象數據。
關於List集合的差集運算的闡述到此結束,關於List集合的並集和交集運算可以參考:C#使用Union方法求兩個List集合的並集數據、C#編程中兩個List集合使用Intersect方法求交集。
備註:原文轉載自博主個人博客站點,原文鏈接C#使用Except方法求取兩個List集合的差集數據_IT技術小趣屋。