RedPlus 개인 블로그

시삽: 레드플러스 님 
게시판 이동:
 제목 : LINQ Group By Into절 사용 코드샘플
글번호: 211
작성자: Administrator ( 레드플러스 / redplus@live.com )
작성일: 2010/12/06 오전 10:17:00 (2010/12/06 오전 10:17:00 수정)
조회수: 4034

소개

아래 그림과 같이 원본 데이터가 주어진 상태에서 LINQ를 통해서 가공을 거쳐 가공 데이터처럼 출력되는 간단한 코드 샘플을 만들어 보았습니다.

image

 

따라하기

1. ASP.NET Web Application에 FrmListOfTypGroup.aspx 웹 폼을 생성합니다.

image

 

2. FrmListOfTypGroup.aspx 웹 폼에 아래와 같이 2개의 GridView를 올려놓습니다.

image

 

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 웹 폼을 시작 페이지로 설정 후 실행하면 아래와 같이 가공된 형태로 데이터가 출력됩니다.
image
 
끝.

























 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트


관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 Windows Phone 7 Add Service Reference Not Worki... - Administrator 2010-12-16 3951
현재글 LINQ Group By Into절 사용 코드샘플 - Administrator 2010-12-06 4034
다음글 이번주 Silverlight 4 개발자 과정 강의 커리큘럼 - Administrator 2010-11-29 4094
관련 페이지 리스트
numtitlenamedateview
388 C 언어에서 값 전달과 참조 전달(Call By Value and Call By Re... Administrator 2023-03-09 3575
387 병합 알고리즘 순서도 2022-10-22 5126
386 C 언어 강의: scanf를 엔터키를 기준으로 여러 행으로 값을 입력 받기 Administrator 2022-01-09 4416
385 C 언어: scanf 사용해서 표준 입력인 콘솔로부터 나이를 정수로 입력 받아 출력 Administrator 2022-01-07 3227
384 Java 코드 샘플 - Function 인터페이스로 람다 식 만들기 Administrator 2022-01-04 3125
383 C# 코드 샘플 - 널 조건부 연산자 사용하기 Administrator 2022-01-02 3164
382 C# 코드 샘플 - 널 병합 연산자와 default 키워드 Administrator 2022-01-02 3075
381 C# 코드 샘플 - 널 병합 연산자로 문자열 변수의 NULL 값 확인하기 Administrator 2022-01-02 2987
380 C# 강의 - 14세 미만 체크 메서드 구현 Administrator 2022-01-01 3040
379 C 언어 천 단위 콤마 찍기 thousands_separator.c Administrator 2021-12-30 4176
378 for 문 순서도 - for 문(for loop) 순서도(flowchart) Administrator 2021-12-28 6892
377 C 언어 코드 샘플 - 전처리기 - 조건부 컴파일 Administrator 2021-12-27 3066
376 C 언어 코드 샘플 - 전처리기 - 매크로 함수 Administrator 2021-12-27 3035
375 http-server 설치하기 - 로컬 루프백 주소로 웹페이지 실행 2021-12-27 3036
374 C 언어 코드 샘플 - N명의 학생의 점수를 입력받아 1차원 배열에 저장 후 총점 구... Administrator 2021-12-27 3091
373 Java 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 2966
372 C 언어 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 3010
371 C# 교과서 강좌 - LINQ - Select 확장 메서드에 익명 형식 사용하기 Administrator 2021-12-26 3129
370 C# 교과서 강의 - LINQ - Select 확장 메서드를 사용하여 새로운 형태로 ... Administrator 2021-12-26 3041
369 C 언어 코드 샘플 - static-shared - 정적(공유) 변수 사용하기 Administrator 2021-12-26 3060
 
 
 
손님 사용자 Anonymous (손님)
로그인 Home