0

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

谢谢。

4

1 回答 1

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)
    );
于 2013-06-02T10:55:53.960 回答