Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- OSI 3계층
- List 추가
- 서브넷
- c#
- 네트워크 용어
- AddRange
- List 찾기
- 서브넷 마스크
- List 제거
- 네트워크
- 기본 게이트웨이
- 알고리즘
- C++
- DP
- list
- Tostring 사용법
- TCP/IP
- 호스트
- BFS
- list 사용법
- Visual Studio
- List 정렬
- C# Find
- InsertRange
- Parse 사용법
- IP주소
- c# list
- 호스트 주소
- C# Contains
- 백준
Archives
- Today
- Total
CodeLabs
[C#] DataTable : 특정 컬럼을 기준으로 정렬 본문
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 |
---|