如何使用LINQ构建过滤器

时间:2013-05-29 12:23:23

标签: linq filter

我有一个带有网格的表单,例如显示公司的所有产品。此外,我还有一些字段和组合框,允许用户选择他想要的过滤器,例如,过滤产品名称,产品类型等...请注意,他可以结合产品名称和产品类型等。 ...此外,这些字段可以留空或未选中(组合),因此我必须执行LINQ查询以过滤用户尝试过滤的网格中的产品。由于有几个字段和组合构成过滤器,如何实现这一目标? 如何构建此查询?

感谢。

1 个答案:

答案 0 :(得分: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)
    );