다음을 통해 공유


FilterExpression 클래스 사용

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Microsoft Dynamics 365 및 Microsoft Dynamics 365(온라인)에서 FilterExpression 클래스를 사용하여 여러 조건을 제시하는 쿼리를 작성할 수 있습니다. 예를 들어 ([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond'와 같이 SQL 문과 동일한 쿼리 식을 만들 수 있습니다.

다음 표에는 FilterExpression 클래스에 대한 속성이 나와 있습니다.

속성

설명

Conditions

특성, 조건 연산자 및 특성 값이 포함된 조건 식을 가져오거나 설정합니다.

FilterOperator

논리 AND/OR 필터 연산자를 가져오거나 설정합니다. 이는 LogicalOperator 열거형을 사용하여 설정됩니다.

Filters

조건 계층 구조와 쿼리 결과를 필터링하는 논리 필터 식을 가져오거나 설정합니다.

IsQuickFindFilter

식이 빠른 찾기 쿼리의 일부인지 여부를 나타내는 값을 가져오거나 설정합니다.

FilterExpression 클래스에는 쿼리를 쉽게 만들 수 있는 여러 가지 도우미 메서드도 포함되어 있습니다.AddCondition 메서드는 ConditionExpression을 조건 식을 구성하는 데 필요한 코드 양을 줄이는 FilterExpressionConditions 속성에 추가합니다.AddFilter 메서드는 새 필터를 FilterExpression 클래스의 Filters 속성에 추가합니다.

이 항목의 내용

필터 표현식 예제

IsQuickFindFilter 속성 정보

필터 표현식 예제

다음 코드 예제에서는 FilterExpression 클래스 사용하는 방법을 보여 줍니다.

QueryExpression query = new QueryExpression("contact"); 
query.ColumnSet.AddColumns("firstname", "lastname", "address1_city"); 

query.Criteria = new FilterExpression(); 
query.Criteria.AddCondition("address1_city", ConditionOperator.Equal, "Redmond"); 

FilterExpression childFilter = query.Criteria.AddFilter(LogicalOperator.Or); 
childFilter.AddCondition("lastname", ConditionOperator.Equal, "Tharpe"); 
childFilter.AddCondition("lastname", ConditionOperator.Equal, "Brown"); 

// Pass query to service proxy 
EntityCollection results = _serviceProxy.RetrieveMultiple(query); 
Console.WriteLine(); 
Console.WriteLine("Query using QE with multiple conditions and filters"); 
Console.WriteLine("---------------------------------------"); 

// Print results 
foreach (var a in results.Entities) 
{ 
Console.WriteLine("Name: {0} {1}", a.GetAttributeValue<string>("firstname"), a.GetAttributeValue<string>("lastname")); 
Console.WriteLine("City: {0}", a.GetAttributeValue<string>("address1_city")); 
} 
Console.WriteLine("---------------------------------------");

IsQuickFindFilter 속성 정보

Fetch XML의 filter 노드에 있는 isquickfindfields 특성과 비슷한 FilterExpression.IsQuickFindFilter 속성을 사용할 수 있습니다. Fetch 쿼리를 저장하면 SavedQueryUserQuery 엔터티 IsQuickFind 속성에 저장됩니다. 쿼리 식과 Fetch XML 쿼리 간의 일관성을 제공하기 위해 IsQuickFindFilter 속성이 추가되었습니다.

다음 규칙은 IsQuickFindFilter 속성에 적용됩니다.

  • 이 필드는 LogicalOperator.Or 유형의 논리 연산자가 있는 식을 필터링하기 위해 true로만 설정할 수 있습니다.LogicalOperator.And 유형의 논리 연산자가 있는 식에 대해 설정하면 IsQuickFindFilter 속성이 무시됩니다.

  • 필터 표현 계층에서 한 필터 표현만 IsQuickFindFilter = 으로 설정할 수 있습니다. 둘 이상 발견되면 예외가 발생합니다.

  • 필터 표현의 IsQuickFindFilter으로 설정된 경우에는 하위 필터 표현 속성을 가질 수 없으며 ConditionExpression 속성만 가질 수 있습니다. 하위 필터 식을 추가하면 예외가 발생합니다.

  • IsQuickFindFilter으로 설정된 필터 표현에 관련된 모든 조건 표현은 단일 비널값 조건이어야 합니다. 즉, 조건이 특성, 연산자 및 값으로 구성된 경우, 값 속성이 널값이 아닌 단일 값인 조건만 지원됩니다. 또한 이러한 조건 식에서 지원되는 유일한 조건 연산자는 null이 아닌 단일 값을 사용하는 것입니다. 값 또는 복수의 값이 탐지되면 예외가 발생합니다.

참고 항목

FilterExpression
QueryExpression을 사용하여 쿼리 작성
QueryExpression에서 왼쪽 우선 외부 조인을 사용하여 "포함 안 할" 레코드 쿼리
ConditionExpression 클래스 사용

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 저작권 정보