소개
아래 그림과 같이 원본 데이터가 주어진 상태에서 LINQ를 통해서 가공을 거쳐 가공 데이터처럼 출력되는 간단한 코드 샘플을 만들어 보았습니다.
따라하기
1. ASP.NET Web Application에 FrmListOfTypGroup.aspx 웹 폼을 생성합니다.
2. FrmListOfTypGroup.aspx 웹 폼에 아래와 같이 2개의 GridView를 올려놓습니다.
3. F7번 또는 코드 비하인드 파일로 이동해서 아래와 같이 코드를 입력합니다.
using System;
using System.Collections.Generic;
using System.Linq;
namespace VarLinq.Qna
{
public partial class FrmListOfTypeGroup : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 원본 데이터 출력
ctlOrigin.DataSource = MyData.GetData();
ctlOrigin.DataBind();
// 가공(Process)
var q = from m in MyData.GetData()
group m by m.업체명 into g
select new 출력타입 {
업체명 = g.Key,
자재명내역 =
String.Format("{0}외 {1}건",
g.Select(n=>n.자재).ElementAtOrDefault(0),
g.Select(n => n.업체명 != null).Count() - 1)
};
// 가공된 데이터 출력
ctlResult.DataSource = q.ToList();
ctlResult.DataBind();
}
}
// 원본 데이터 형식 : DataSet 형태라면, List 형태로 변형 후 처리 요
public class MyData
{
public int Num { get; set; } // 일련번호
public string 업체명 { get; set; }
public string 자재 { get; set; }
public DateTime 일자 { get; set; }
public int 금액 { get; set; }
public int 부가세 { get; set; }
public int 합계 { get; set; }
// Fake하게 데이터를 입력후 반환하는 샘플 메서드
public static List GetData()
{
List lst = new List();
// 샘플로 6개의 데이터를 입력함.
lst.Add(new MyData { Num = 1, 업체명 = "가", 자재 = "자재1", 일자 = DateTime.Now, 금액 = 1000, 부가세 = 100, 합계 = 1100 });
lst.Add(new MyData { Num = 2, 업체명 = "가", 자재 = "자재2", 일자 = DateTime.Now, 금액 = 1000, 부가세 = 100, 합계 = 1100 });
lst.Add(new MyData { Num = 3, 업체명 = "나", 자재 = "자재1", 일자 = DateTime.Now, 금액 = 1000, 부가세 = 100, 합계 = 1100 });
lst.Add(new MyData { Num = 4, 업체명 = "나", 자재 = "자재2", 일자 = DateTime.Now, 금액 = 1000, 부가세 = 100, 합계 = 1100 });
lst.Add(new MyData { Num = 5, 업체명 = "나", 자재 = "자재3", 일자 = DateTime.Now, 금액 = 1000, 부가세 = 100, 합계 = 1100 });
lst.Add(new MyData { Num = 6, 업체명 = "나", 자재 = "자재4", 일자 = DateTime.Now, 금액 = 1000, 부가세 = 100, 합계 = 1100 });
return lst;
}
}
// 원본데이터와 달리 출력타입이 새로운 형태라면,
// 출력형태의 엔터티 타입을 새롭게 생성
public class 출력타입
{
public string 업체명 { get; set; }
public string 자재명내역 { get; set; }
}
}
4. FrmListOfTypGroup.aspx 웹 폼을 시작 페이지로 설정 후 실행하면 아래와 같이 가공된 형태로 데이터가 출력됩니다.
끝.