데이터베이스 구성 요소 Hxj. Data (15) (조회 의 정렬, 그룹)

4505 단어
이 절 은 검색 의 정렬 (orderby) 과 그룹 (group by) 을 설명 합 니 다.
 
정렬
페이지 에 정렬 이 지정 되 지 않 으 면 구성 요 소 는 페이지 를 나 누 는 기본 정렬 을 합 니 다.
예컨대
DbSession.Default.From<Products>()
                .Page(10, 2)
                .Where(Products._.CategoryID.SelectIn(1, 2, 3))
                .ToList();

생 성 된 sql 은 다음 과 같 습 니 다:
Text: 
SELECT * FROM
( SELECT TOP 10 * FROM
( SELECT TOP 20 * FROM [Products]
WHERE [Products].[CategoryID]
IN (@c651c8c47b4f4b7587a65b1efeea17a2,@210f5286b2ec4ceabae99f4729d22a74,@5abe298074eb43e98016af330da896e1) ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable
ORDER BY [ProductID] ASC

Parameters:
@c651c8c47b4f4b7587a65b1efeea17a2[Int32] = 1 @210f5286b2ec4ceabae99f4729d22a74[Int32] = 2 @5abe298074eb43e98016af330da896e1[Int32] = 3

기본적으로 productid 를 정렬 로 지정 합 니 다.
 
물론 우리 도 스스로 정렬 을 지정 할 수 있다.
DbSession.Default.From<Products>()
                .Page(10, 2)
                .Where(Products._.CategoryID.SelectIn(1, 2, 3))
                .OrderBy(Products._.CategoryID.Asc)
                .ToList();

생 성 된 sql 은 다음 과 같 습 니 다:
Text: 
SELECT * FROM
( SELECT TOP 10 * FROM
( SELECT TOP 20 * FROM [Products]
WHERE [Products].[CategoryID] IN (@2ba49ec0bf2e47558a06a5ec8a80476a,@1963fb47beb9421896891620c89abddb,@80d632cbcd5843958606bf85371a0428)
ORDER BY [Products].[CategoryID] ASC) AS tempIntable
ORDER BY [CategoryID] DESC) AS tempOuttable
ORDER BY [CategoryID] ASC

Parameters:
@2ba49ec0bf2e47558a06a5ec8a80476a[Int32] = 1 @1963fb47beb9421896891620c89abddb[Int32] = 2 @80d632cbcd5843958606bf85371a0428[Int32] = 3

페이지 를 나 눌 때 category id 에 따라 정렬 합 니 다.
 
검색 에 정렬 하 는 방법 은 Orderby () 입 니 다.
 
여러 필드 의 정렬 은 다음 과 같 습 니 다:
DbSession.Default.From<Products>()
                .OrderBy(Products._.CategoryID.Asc && Products._.ProductID.Asc)
                .ToList();

생 성 된 sql
Text: 
SELECT * FROM [Products] ORDER BY [Products].[CategoryID] ASC,[Products].[ProductID] ASC

 
 
패 킷
그룹 바 이 를 통 해 어떤 필드 에 따라 그룹 을 나 눌 지 설정 합 니 다.
예 를 들 면:
DbSession.Default.From<Products>()
               .GroupBy(Products._.ProductName.GroupBy)
               .Select(Products._.ProductName)
               .ToDataTable();

생 성 된 sql:
Text: 
SELECT [Products].[ProductName] FROM [Products] GROUP BY [Products].[ProductName]

여러 필드 에 따라 그룹 을 나 누 는 것 은 여러 정렬 과 유사 합 니 다.
DbSession.Default.From<Products>()
               .GroupBy(Products._.ProductName.GroupBy && Products._.ProductID.GroupBy)
               .Select(Products._.ProductName,Products._.ProductID)
               .ToDataTable();

sql:
Text: 
SELECT [Products].[ProductName],[Products].[ProductID] FROM [Products] GROUP BY [Products].[ProductName],[Products].[ProductID]

 
 
정렬 과 그룹 구성 이 모두 간단 해 졌 다.
 
다음 절 에 서 는 Field 를 이야기 할 것 이다.

좋은 웹페이지 즐겨찾기