Programming/프로그래밍

2개의 클래스 리스트 합치기.

leeusin 2023. 8. 31. 18:50

두 개의 같은 클래스의 다른 데이터를 가진 리스트를 합치고, 클래스 내부의 A 값이 동일한 경우 하나만 남기고 합치는 작업을 하려면 LINQ의 GroupBy 함수와 Select 함수를 활용할 수 있습니다. 아래 예시 코드로 설명하겠습니다.

예를 들어, 다음과 같은 클래스가 있다고 가정합니다:

 

class Item
{
    public string A { get; set; }
    public int B { get; set; }
}

그리고 합친다.

using System;
using System.Collections.Generic;
using System.Linq;

class Item
{
    public string A { get; set; }
    public int B { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        List<Item> list1 = new List<Item>
        {
            new Item { A = "A1", B = 10 },
            new Item { A = "A2", B = 20 },
            new Item { A = "A3", B = 30 }
        };

        List<Item> list2 = new List<Item>
        {
            new Item { A = "A2", B = 25 },
            new Item { A = "A3", B = 35 },
            new Item { A = "A4", B = 45 }
        };

        var mergedList = list1.Concat(list2)
                              .GroupBy(item => item.A)
                              .Select(group => group.First())
                              .ToList();

        Console.WriteLine("Merged and deduplicated list:");
        foreach (var item in mergedList)
        {
            Console.WriteLine($"A: {item.A}, B: {item.B}");
        }
    }
}


위의 코드에서 Concat 함수로 두 개의 리스트를 합친 후, GroupBy 함수를 사용하여 A 값을 기준으로 그룹화합니다. 그 다음, 각 그룹에서 첫 번째 아이템을 선택하여 중복을 제거한 리스트를 생성합니다.

결과적으로 mergedList는 A 값이 중복되지 않도록 하여 합쳐진 리스트가 됩니다.

반응형