내보내기(0) 인쇄
모두 확장
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

테이블 서비스에 대한 LINQ 쿼리 작성

업데이트 날짜: 2014년 2월

LINQ 구문을 사용하여 테이블 서비스에 대해 쿼리를 작성할 수 있습니다. 다음 예에서는 테이블 및 엔터티 쿼리에 표시된 예제 쿼리와 비슷하지만 REST 프로토콜 대신 LINQ를 사용해서 예제 쿼리를 작성하는 방법을 보여줍니다.

테이블 서비스는 엔터티의 모든 속성을 검색하는 간단한 쿼리 실행을 지원하지만 엔터티 속성의 하위 집합을 선택할 수 없습니다. 테이블 서비스에서는 또한 Where 연산자를 사용한 쿼리 결과 필터링 및 Take 연산자를 사용해서 반환할 엔터티 수 지정이 지원됩니다.

테이블 서비스에서 지원되는 LINQ 연산자에 대한 자세한 내용은 테이블 서비스에 지원되는 쿼리 연산자를 참조하십시오.

LINQ select 절을 사용해서 엔터티에서 속성 하위 집합을 프로젝션할 수 있습니다. 프로젝션 가능한 최대 속성 수는 항목에 포함될 수 있는 최대 속성 수이기도 한 255개입니다.

엔터티의 속성을 프로젝션하기 위해서는 클라이언트가 다음과 같이 DataServiceVersion 또는 MaxDataServiceVersion 헤더를 지정하여 표시된 OData 데이터 서비스 버전 2.0을 지원해야 합니다.

DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

다음 예에서는 필요한 개체 이니셜라이저를 사용해서 단일 엔터티로부터 속성을 프로젝션하는 방법을 보여줍니다.

var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
                 where entity.PartitionKey == "MyPartitionKey"
                 select new { entity.RowKey };

다음 예에서는 10개 속성이 포함된 엔터티에서 3개의 속성을 프로젝션합니다. 이 예에서 SampleEntity의 10개 속성은 A부터 J까지의 문자입니다.

IEnumerable<SampleEntity> query = from entity in
                                       dataServiceContext.CreateQuery<SampleEntity>(tableName)
                                       where entity.PartitionKey == "MyPartitionKey"
                                       select new SampleEntity
                                      {
                                          PartitionKey = entity.PartitionKey,
                                          RowKey = entity.RowKey,
                                          A = entity.A,
                                          D = entity.D,
                                          I = entity.I
                                      };

단일 엔터티 프로젝션은 지원되지 않습니다. 다음 코드로 생성된 REST 요청은 유효하지 않습니다.

var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
                 where entity.PartitionKey == "MyPartitionKey"
                 select { entity.RowKey }; // this code is invalid!

또한 표준 REST 요청에 $select 쿼리 옵션을 사용해서 엔터티 속성을 프로젝션할 수 있습니다. 자세한 내용은 엔터티 쿼리(REST API)를 참조하십시오.

엔터티 프로젝션 및 변형에 대한 자세한 내용은 OData 설명서에서 Select 시스템 쿼리 옵션($select)을 참조하십시오.

n개의 엔터티를 반환하기 위해 LINQ Take 연산자를 사용합니다. 단일 쿼리로 반환할 수 있는 최대 엔터티 수는 1,000입니다. Take 연산자에 대해 1,000개가 넘는 값을 지정하면 오류 코드 400(잘못된 요청)이 나타납니다.

다음 예에서는 Customers 테이블에서 상위 10개 엔터티를 반환합니다.

var query = (from entity in context.CreateQuery<Customer>("Top10Customers")
                 select entity).Take(10);

다음 예에서는 두 개의 문자열 속성에 대해 필터링합니다.

var query = from entity in context.CreateQuery<Customer>("SpecificCustomer")
                 where entity.LastName.Equals("Smith")
                 && entity.FirstName.Equals("John")
                 select entity;

다음 예에서는 비교 연산자를 사용한 접두사 일치를 수행해서 문자 'A'로 시작하는 LastName 속성이 포함된 엔터티를 반환합니다.

var query = from entity in context.CreateQuery<Customer>("CustomersA")
                 where entity.LastName.CompareTo("A") >= 0
                 && entity.LastName.CompareTo("B") < 0
                 select entity;

다음 예에서는 값이 30보다 큰 Age 속성이 포함된 모든 엔터티를 반환합니다.

var query = from entity in context.CreateQuery<Customer>("CustomersOver30")
                 where entity.Age > 30
                 select entity;

이 예에서는 해당 값이 100.25보다 작거나 같은 AmountDue 속성이 포함된 모든 엔터티를 반환합니다.

var query = from entity in context.CreateQuery<Customer>("CustomersAmountDue")
                 where entity.AmountDue <= 100.25
                 select entity;

다음 예에서는 IsActive 속성이 true로 설정된 모든 엔터티를 반환합니다.

var query = from entity in context.CreateQuery<Customer>("ActiveCustomers")
                 where entity.IsActive == true
                 select entity;

다음 예에서는 CustomerSince 속성이 2008년 7월 10일과 동일한 엔터티를 반환합니다.

DateTime dt = new DateTime(2008, 7, 10);
var query = from entity in context.CreateQuery<Customer>("CustomerSince")
                 where entity.CustomerSince.Equals(dt)
                 select entity;

참고 항목

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
표시:
© 2014 Microsoft. All rights reserved.