CodeLabs

[C#] DataTable : 특정 컬럼을 기준으로 정렬 본문

C#/DataTable

[C#] DataTable : 특정 컬럼을 기준으로 정렬

무오_ 2023. 9. 3. 15:16

A Table


Name Menu Price
Jane 피자 20000
Bob 샐러드 6000
Jane 햄버거 12000
Bob 돈까스 9000

 

B Table


Name Menu Price
Jane 피자, 햄버거 32000
Bob 샐러드, 돈까스 15000

 

A Table -> B Table

    static void Solution()
    {
        DataTable originalTable = new DataTable();
        originalTable.Columns.Add("Name", typeof(string));
        originalTable.Columns.Add("Menu", typeof(string));
        originalTable.Columns.Add("Price", typeof(int));

        originalTable.Rows.Add("Jane", "피자", 20000);
        originalTable.Rows.Add("Bob", "샐러드", 6000);
        originalTable.Rows.Add("Jane", "햄버거", 12000);
        originalTable.Rows.Add("Bob", "돈까스", 9000);

        DataTable mergedTable = new DataTable();
        mergedTable.Columns.Add("Name", typeof(string));
        mergedTable.Columns.Add("Menu", typeof(string));
        mergedTable.Columns.Add("Price", typeof(int)); 

        var groupedData = originalTable.AsEnumerable()
            .GroupBy(row => new { Name = row.Field<string>("Name") })
            .Select(group => new
            {
                Name = group.Key.Name,
                Menu = string.Join(", ", group.Select(row => row.Field<string>("Menu"))),
                Price = group.Sum(row => row.Field<int>("Price"))
            });

        foreach (var item in groupedData)
        {
            mergedTable.Rows.Add(item.Name, item.Menu, item.Price);
        }

        foreach (DataRow row in mergedTable.Rows)
        {
            Console.WriteLine($"[{row["Name"]}] [{row["Menu"]}] 합계 : [{row["Price"]}원]");
        }
    }

 

'C# > DataTable' 카테고리의 다른 글

[C#] DataTable 사용법 [생성,삽입,조회]  (0) 2023.08.31