첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ LINQ 확장 메소드를 사용해 각 그룹에서 첫번째 항목만 출력하는 방법을 보여준다.

TestProject.zip
0.00MB

▶ Item.cs

namespace TestProject;

/// <summary>
/// 항목
/// </summary>
public class Item
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Property
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region ID - ID

    /// <summary>
    /// ID
    /// </summary>
    public int ID { get; set; }

    #endregion
    #region 성명 - Name

    /// <summary>
    /// 성명
    /// </summary>
    public string Name { get; set; }

    #endregion
    #region 연도 - Year

    /// <summary>
    /// 연도
    /// </summary>
    public int Year { get; set; }

    #endregion
    #region 데이터 - Data

    /// <summary>
    /// 데이터
    /// </summary>
    public int Data { get; set; }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 문자열 구하기 - ToString()

    /// <summary>
    /// 문자열 구하기
    /// </summary>
    /// <returns>문자열</returns>
    public override string ToString()
    {
        return $"{ID}, {Name}, {Year}, {Data}";
    }

    #endregion
}

 

▶ Program.cs

namespace TestProject;

/// <summary>
/// 프로그램
/// </summary>
class Program
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Static
    //////////////////////////////////////////////////////////////////////////////// Private

    #region 프로그램 시작하기 - Main()

    /// <summary>
    /// 프로그램 시작하기
    /// </summary>
    private static void Main()
    {
        List<Item> sourceList = new List<Item>
        {
            new Item { ID = 1, Name = "Nima", Year = 1990, Data = 10 },
            new Item { ID = 2, Name = "Nima", Year = 1990, Data = 11 },
            new Item { ID = 3, Name = "Nima", Year = 2000, Data = 12 },
            new Item { ID = 4, Name = "John", Year = 2001, Data = 1  },
            new Item { ID = 5, Name = "John", Year = 2002, Data = 2  },
            new Item { ID = 6, Name = "Sara", Year = 2010, Data = 4  }
        };

        Console.WriteLine("소스 리스트");
        Console.WriteLine("----------------------------------------");

        foreach(Item item in sourceList)
        {
            Console.WriteLine(item);
        }

        Console.WriteLine("----------------------------------------");
        Console.WriteLine();
        Console.WriteLine("결과 리스트");
        Console.WriteLine("----------------------------------------");

        IEnumerable<Item> resultEnumerable = sourceList.GroupBy(x => x.Name)
                                                       .Select
                                                        (
                                                            groups => new Item
                                                            {
                                                                Name = groups.First().Name,
                                                                Year = groups.First().Year,
                                                                Data = groups.First().Data
                                                            }
                                                        );

        foreach(var item in resultEnumerable)
        {
            Console.WriteLine(item);
        }

        Console.WriteLine("----------------------------------------");
    }

    #endregion
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요