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