구글링을 열심히 한 결과, stackoverflow.com에서 답을 찾았네요.
PredicateBuilder 클래스를 활용하라는 답이 가장 호응이 좋았는데요.
아래 O'Reilly에서 나온 C# 3.0 IN A NUTSHELL 사이트의 어떤 페이지로 이끌더군요.
원문은 그곳을 참조하시면 됩니다.
Dynamically Composing Expression Predicates
자신의 프로젝트에 아래와 같이 PredicateBuilder 클래스를 추가하고,
사용은 다음과 같이 합니다.
검색 조건이 다양할 때 조건문과 함께 사용하면 더 빛을 발하겠습니다!
'얼렁뚱땅은 싫다 자세히 이해하고 싶다!'는 분은 위에 소개한 원문 링크를 따라 들어가 보시면,
유익한 정보가 있습니다.
LINQ Query 연습할 때 사용하면 좋은 LINQPad도 소개되어 있으니 참고하세요.
PredicateBuilder 클래스를 활용하라는 답이 가장 호응이 좋았는데요.
아래 O'Reilly에서 나온 C# 3.0 IN A NUTSHELL 사이트의 어떤 페이지로 이끌더군요.
원문은 그곳을 참조하시면 됩니다.
Dynamically Composing Expression Predicates
자신의 프로젝트에 아래와 같이 PredicateBuilder 클래스를 추가하고,
using System; using System.Linq; using System.Linq.Expressions; using System.Collections.Generic; public static class PredicateBuilder { public static Expression> True () { return f => true; } public static Expression > False () { return f => false; } public static Expression > Or (this Expression > expr1, Expression > expr2) { var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast ()); return Expression.Lambda > (Expression.OrElse (expr1.Body, invokedExpr), expr1.Parameters); } public static Expression > And (this Expression > expr1, Expression > expr2) { var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast ()); return Expression.Lambda > (Expression.AndAlso (expr1.Body, invokedExpr), expr1.Parameters); } }
사용은 다음과 같이 합니다.
IQueryableSearchProducts (params string[] keywords) { var predicate = PredicateBuilder.False (); foreach (string keyword in keywords) { string temp = keyword; predicate = predicate.Or (p => p.Description.Contains (temp)); } return dataContext.Products.Where (predicate); }
검색 조건이 다양할 때 조건문과 함께 사용하면 더 빛을 발하겠습니다!
'얼렁뚱땅은 싫다 자세히 이해하고 싶다!'는 분은 위에 소개한 원문 링크를 따라 들어가 보시면,
유익한 정보가 있습니다.
LINQ Query 연습할 때 사용하면 좋은 LINQPad도 소개되어 있으니 참고하세요.
'Silverlight > Tips' 카테고리의 다른 글
[Tip] Silverlight 4 Beta Tools 설치 중 오류를 만났을 때 (0) | 2010.02.01 |
---|---|
실버라이트에서 JSON 데이터 활용하기 (2) | 2010.01.31 |
ASP.NET 웹서비스 세션유지 실버라이트에선 되는데 WinForm에서 안될 때! (0) | 2010.01.13 |
ChildWindow에서 VisualStateManager.GoToState(...)가 말을 안들을 때 (1) | 2009.10.16 |
방문자 분들의 Silverlight 플러그인 설치상황 [Google Analytics] (0) | 2009.07.28 |
Expression Blend 3와 TFS 연동하기 (12) | 2009.07.22 |
VS에서 지원하는 Document Outline for XAML 기능 (0) | 2009.07.21 |