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 클래스에 대한 속성이 나와 있습니다.
속성 |
설명 |
특성, 조건 연산자 및 특성 값이 포함된 조건 식을 가져오거나 설정합니다. |
|
논리 AND/OR 필터 연산자를 가져오거나 설정합니다. 이는 LogicalOperator 열거형을 사용하여 설정됩니다. |
|
조건 계층 구조와 쿼리 결과를 필터링하는 논리 필터 식을 가져오거나 설정합니다. |
|
식이 빠른 찾기 쿼리의 일부인지 여부를 나타내는 값을 가져오거나 설정합니다. |
FilterExpression 클래스에는 쿼리를 쉽게 만들 수 있는 여러 가지 도우미 메서드도 포함되어 있습니다.AddCondition 메서드는 ConditionExpression을 조건 식을 구성하는 데 필요한 코드 양을 줄이는 FilterExpression의 Conditions 속성에 추가합니다.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 쿼리를 저장하면 SavedQuery 및 UserQuery 엔터티 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. 저작권 정보