C# Dictionary 사용에 대한 예제입니다.
Dictionary<TKey, TValue> 는 Key와 Value 가 한 쌍으로 이루어져 있습니다.
Key를 통해서 Value를 검색하기 때문에 빠르게 값을 찾아 올 수 있고,
Key를 중복해서 저장할 수 없기 때문에 유일성을 가지는 Collection 구조를 만들어 사용할 수 있습니다.
아래 시나리오는 APPLE, BANANA, ORAGNE를 1월부터 12월까지 판매한 수량이 대한 Data를 바탕 한해동안 판매된 누적수량을 집계하는 부분을 Dictionary를 사용해서 계산하는 예제입니다.
Dictionary<string, int> 로 선언하고
Key에는 PRODUCT ( APPLE, BANANA, ORANGE ) 값이 들어가고 Value에는 누적 판매수량이 집계됩니다.
[시나리오 설명]
Data : 1월부터 12월까지 제품 판매 수량에 대한 Data입니다.
Result : 제품별 누적 판매 수량을 집계한 결과 Data입니다.
이 부분을 Dictionary를 사용해서 계산합니다.
[코드설명]
CreateData() : APPLE, BANANA, ORANGE 제품에 대해서 1월 ~ 12월 까지 판매수량을 Random 함수를 사용해서 Data를 생성하는 부분입니다.
CreateResult() : CreateData()에서 만들어진 Data를 바탕으로 Dictionary를 사용해서 APPLE, BANANA, ORANGE에 대해서 누적판매수량을 집계하는 부분입니다.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Dictionary { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { DataTable dt = CreateData(); this.gridData.DataSource = dt; DataTable resultDT = CreateResult(dt); this.gridResult.DataSource = resultDT; } private DataTable CreateResult(DataTable dt) { DataTable resultDt = new DataTable(); DataColumn prodColumn = new DataColumn("PRODUCT", typeof(string)); DataColumn qtyColumn = new DataColumn("QTY", typeof(int)); resultDt.Columns.Add(prodColumn); resultDt.Columns.Add(qtyColumn); Dictionaryresult = new Dictionary (); foreach (DataRow row in dt.Rows) { string product = row["PRODUCT"].ToString(); int qty = (int)row["QTY"]; if (result.ContainsKey(product) == false)//이미 저장된 Key값이 있는지 확인 result.Add(product, 0); result[product] += qty;//해당 Key 값에 Value 값 누적 } foreach (KeyValuePair info in result) { DataRow newRow = resultDt.NewRow(); newRow[prodColumn] = info.Key; newRow[qtyColumn] = info.Value; resultDt.Rows.Add(newRow); } return resultDt; } private DataTable CreateData() { DataTable dt = new DataTable(); DataColumn prodColumn = new DataColumn("PRODUCT", typeof(string)); DataColumn qtyColumn = new DataColumn("QTY", typeof(int)); DataColumn monthColumn = new DataColumn("MONTH", typeof(int)); dt.Columns.Add(prodColumn); dt.Columns.Add(qtyColumn); dt.Columns.Add(monthColumn); List prodList = new List (); prodList.Add("APPLE"); prodList.Add("BANANA"); prodList.Add("ORANGE"); Random r = new Random(); for (int i = 1; i <= 12; i++) { foreach (string prod in prodList) { DataRow newRow = dt.NewRow(); newRow[prodColumn] = prod; newRow[qtyColumn] = r.Next(0, 101); newRow[monthColumn] = i; dt.Rows.Add(newRow); } } return dt; } } }
'C# > Common' 카테고리의 다른 글
C# Dictionary sort 정렬하는 방법 (0) | 2021.06.07 |
---|---|
[C#] Enum foreach - Enum(열거형) 반복문 사용법 (0) | 2018.04.05 |
[C#] DataTable 사용법 (0) | 2018.03.28 |
[C#] Color (0) | 2018.03.20 |
[C#] Random Class 사용 (0) | 2018.03.20 |
댓글