2013-05-29 3 views
0

예를 들어 회사의 모든 제품을 표시하는 눈금이있는 양식이 있습니다. 또한 일부 필드와 콤보 박스를 사용하여 사용자가 원하는 필터를 선택할 수 있도록 허용합니다 (예 : 제품 이름, 제품 유형 등). 제품 이름과 제품 유형 등을 결합 할 수 있습니다. ... 또한이 필드는 비워 둘 수도 있고 선택하지 않을 수도 있습니다 (콤보). 그래서 사용자가 필터링하려고 시도한 것에서 그리드의 제품을 필터링하기 위해 LINQ 쿼리를 수행해야합니다. 필터를 구성하는 여러 필드와 콤보가 있기 때문에이를 달성하는 방법은 무엇입니까? 이 검색어를 작성하는 방법은 무엇입니까?LINQ로 필터를 작성하는 방법

감사합니다.

+0

봐 측면 및 검색. 이것은 이미 많은 시간을 요청 받았습니다. –

+0

이 링크 확인 http://stackoverflow.com/questions/11014017/dynamic-where-clauses-lambda-or-query-in-c-sharp – vijay

답변

0

쿼리 형태의 구조가 그대로 유지하는 경우, 사용자가 설정되지 않은 분야에 대한 제한을 무시 하나의 큰 조건을 구축 할 수 있습니다 : 오른쪽에있는 "관련"절에

decimal? minPrice = ...; 
decimal? maxPrice = ...; 
string prodName = ...; 
bool noName = string.IsNullOrWhitespace(prodName); 
string prodType = ...; 
bool noType = string.IsNullOrWhitespace(prodType); 
var filteredProducts = context 
    .AllProducts 
    .Where(p => 
     (!minPrice.HasValue || p.Price >= minPrice.Value) 
    && (!maxPrice.HasValue || p.Price <= maxPrice.Value) 
    && (noName || p.Name == prodName) 
    && (noType || p.Type == prodType) 
    ); 
관련 문제