1. 원인 : 원본 데이터(DB테이블, List형식등)의 그룹으로 나눠서 일단 데이터를 추합한 후에 최종적으로 필요한 데이터를 추출할 경우가 대상이 될 경우
2. 처리방법 : 기본적인 처리순서는 원본 데이터의 최소한의 조건(Where)을 처리한 후에 그룹(Group By)을 설정하고 그 결과를 조회(Select)해서 필요한 항목(컬럼)을 추출하면 일단 첫번째 그룹처리는 완료됩니다. 그후에 최종적으로 필요한 데이터를 추출하기 위한 그룹(Group By)을 설정하고 필요한 항목(컬럼)을 추출하면 원한은 데이터가 나옵니다.
기본적인 코드는 다음과 같습니다.
var result = from dataoriginal(원번데이터명) in data(DB테이블이나 List형식의데이터등)
where (데이터 추출 조건 설정)
group 그룹명 by new
{
첫번째 그룹 조건설정
} into 첫번째 그룹조건명
select new
{
중간 추출할 항목 설정
} into 중간 추출항목명
group 그룹명 by new
{
두번째 그룹 조건설정
} into 두번째 그룹조건명
select new
{
최종적으로 추출할 항목 설정
};
3. 샘플코드
var originalDataQuery =
from originalData in dataTable(DB테이블명)
where
originalData.조건컬럼명 == 조회조건값 (원본데이터 추합조건)
group originalData by new
{
careerDetail.컬럼1, (그룹조건의 컬럼1)
careerDetail.컬럼2, (그룹조건의 컬럼2)
} into originalDataGroup
select new
{
추출컬럼1 = originalDataGroup.Key.추출컬럼1명, (추출컬럼1의 값)
추출컬럼2 = originalDataGroup.First().추출컬럼2명, (추출컬럼2의 첫번째 레코드값)
추출컬럼3 = originalDataGroup.Count() (추출레코드의 합계값)
} into careerDetail2
group careerDetail2 by new
{
careerDetail2.컬럼1명 (그룹조건2의 컬럼1)
} into careerDetailGroup2
select new
{
추출컬럼1 = originalDataGroup.Key.추출컬럼1명, (추출컬럼1의 값)
추출컬럼2 = originalDataGroup.First().추출컬럼2명, (추출컬럼2의 첫번째 레코드값)
추출컬럼3 = originalDataGroup.Count() (추출레코드의 합계값)
};
'C#' 카테고리의 다른 글
Linq의 처리속도개선 방법 (0) | 2022.06.27 |
---|---|
BackgroundWorker이벤트에 설정된 처리(DoWork)를 취소하는 방법 (0) | 2022.04.20 |
대용량 데이터 등록(SqlBulkCopy)시 트랙잭션(Transaction) 에러가 발생할때의 대응방법 (0) | 2022.01.30 |
DataGrid의 Binding ItemSource 업데이트하기 (0) | 2021.08.29 |
LINQ Repeat 사용법 (0) | 2021.08.13 |
댓글