C#對List取交集、差集及並集
阿新 • • 發佈:2019-02-13
1. 交集
(1)取交集 (A和B都有)
List A : { 1 , 2 , 3 , 5 , 9 }
List B : { 4 , 3 , 9 }
var intersectedList = list1.Intersect(list2);
結果 : { 3 , 9 }
(2)判斷A和B是否有交集
bool isIntersected = list1.Intersect(list2).Count() > 0
2. 差集
(1)取差集 (A有,B沒有)
List A : { 1 , 2 , 3 , 5 , 9 }
List B : { 4 , 3 , 9 }
var expectedList = list1.Except(list2);
結果 : { 1 , 2 , 5 }
(2)判斷A和B是否有差集
bool isExpected = list1.Expect(list2).Count() > 0
3. 並集
(1)取並集(包含A和B)
List A : { 1 , 2 , 3 , 5 , 9 }
List B : { 4 , 3 , 9 }
public static class ListExtensions
{
public static List<T> Merge<T>(this List <T> source, List<T> target)
{
List<T> mergedList = new List<T>(source);
mergedList.AddRange(target.Except(source));
return mergedList;
}
}
var mergedList = list1.Merge(list2);
結果 : { 1 , 2 , 3 , 5 ,9 , 4 }