在C#語言的編程開發中,有時候需要對List集合數據進行運算,如對兩個List集合進行交集運算或者並集運算,其中針對2個List集合的並集運算,可以使用Union方法來快速實現,Union方法的調用格式為List1.Union(List2),List1和List2為同類型的List集合數據。 (1) ...
在C#語言的編程開發中,有時候需要對List集合數據進行運算,如對兩個List集合進行交集運算或者並集運算,其中針對2個List集合的並集運算,可以使用Union方法來快速實現,Union方法的調用格式為List1.Union(List2),List1和List2為同類型的List集合數據。
(1)針對值類型的List集合,兩個集合的合併即以值是否相同為準進行合併。例如以下兩個List<int>集合,list1的值為1、2、3、4。list2的值為3、4、5、6。則求它們並集可使用list1.Union(list2)快速實現。
List<int> list1 = new List<int> { 1, 2, 3, 4 }; List<int> list2 = new List<int> { 3, 4, 5, 6 }; List<int> unionjiList = list1.Union(list2).ToList();
上述結果語句求得unionjiList 結果為:unionjiList 中含有5個元素,為1,2,3,4,5。
(2)針對引用類型的對象List集合,如自定義類對象的List集合,判斷是否為同一個元素的規則是判斷對象的引用指針是否一致,如果兩個集合中的兩個對象的所有屬性值都一樣,但對象的引用地址不同,也是2個不同的值,在並集中會同時出現這2個元素。具體舉例如下:
List<TestModel> list1 = new List<TestModel>(); list1.Add(new TestModel() { Index = 1, Name = "TestModel1" }); list1.Add(new TestModel() { Index = 2, Name = "TestModel2" }); list1.Add(new TestModel() { Index = 3, Name = "TestModel3" }); list1.Add(new TestModel() { Index = 4, Name = "TestModel4" }); List<TestModel> list2 = new List<TestModel>(); list2.Add(new TestModel() { Index = 3, Name = "TestModel3" }); list2.Add(new TestModel() { Index = 4, Name = "TestModel4" }); list2.Add(new TestModel() { Index = 5, Name = "TestModel5" }); list2.Add(new TestModel() { Index = 6, Name = "TestModel6" }); List<TestModel> unionjiList = list1.Union(list2).ToList();
上述語句的運行結果為:unionjiList集合一共有8個對象,8個對象的屬性值即為上述語句Add裡面的一致。並沒有把list1和list2中的Index=3或4的兩個對象視為同一個元素。但如果是下列語句寫法,則unionjiList集合中只有6個元素,unionjiList集合中Index為3或4的對象就各只有一個了。
TestModel model1 = new TestModel() { Index = 1, Name = "TestModel1" }; TestModel model2 = new TestModel() { Index = 2, Name = "TestModel2" }; TestModel model3 = new TestModel() { Index = 3, Name = "TestModel3" }; TestModel model4 = new TestModel() { Index = 4, Name = "TestModel4" }; TestModel model5 = new TestModel() { Index = 5, Name = "TestModel5" }; TestModel model6 = new TestModel() { Index = 6, Name = "TestModel6" }; list1.Add(model1); list1.Add(model2); list1.Add(model3); list1.Add(model4); list2.Add(model3); list2.Add(model4); list2.Add(model5); list1.Add(model6); List<TestModel> unionjiList = list1.Union(list2).ToList();
關於List集合的並集運算的闡述就到這,相應的List交集運算可參考此文:C#編程中兩個List集合使用Intersect方法求交集。
備註:原文轉載自博主個人站點IT技術小趣屋,原文鏈接: C#使用Union方法求兩個List集合的並集數據_IT技術小趣屋。