C# 使用 LINQ 操作集合大全(合併、聯集、差集、交集、合併計算)

合併 Concat

將兩集合資料合併,產生新集合:
    
List<int> list1 = new() { 1, 2, 3, 4, 5 };
List<int> list2 = new() { 3, 4, 5, 6, 7 };

var result = list1.Concat(list2).ToList();
// 1, 2, 3, 4, 5, 3, 4, 5, 6, 7
    

聯集 Union

將兩集合資料合併,產生新集合,若有相同資料則會去除重複資料
    
List<int> list1 = new() { 1, 2, 3, 4, 5 };
List<int> list2 = new() { 3, 4, 5, 6, 7 };

var result = list1.Union(list2).ToList();
// 1, 2, 3, 4, 5, 6, 7
    

差集 Except

將 A 集合去除掉和 B 集合重複的內容,並產生新集合
    
List<int> list1 = new() { 1, 2, 3, 4, 5 };
List<int> list2 = new() { 3, 4, 5, 6, 7 };

var result = list1.Except(list2).ToList();
// 1, 2
    

交集 Intersect

將 A 集合與 B 集合重複的內容取出,產生新集合
    
List<int> list1 = new() { 1, 2, 3, 4, 5 };
List<int> list2 = new() { 3, 4, 5, 6, 7 };

var result = list1.Intersect(list2).ToList();
// 3, 4, 5
    

合併計算 Zip

將 A 集合與 B 集合依序將資料合併計算,產生新集合。若兩集合長度不同,則多餘的資料會被忽略
    
List<int> list1 = new() { 1, 2, 3, 4, 5, 6 };
List<int> list2 = new() { 3, 4, 5, 6, 7 };

var result = list1.Zip(list2)
    .Select(x => x.First + x.Second)
    .ToList();
// 4, 6, 8, 10, 12
    



延伸閱讀: C# LINQ 從 0 到 1 基礎教學

留言