我有一个带有网格的表格,例如显示公司的所有产品。我还有一些字段和组合框允许用户选择他想要过滤的内容,例如,过滤产品名称、产品类型等...请注意,他可以结合产品名称和产品类型等。 ...此外,这些字段可以留空或未选中(组合),因此我必须执行 LINQ 查询以从用户尝试过滤的内容中过滤网格中的产品。由于构成过滤器的字段和组合有几个,如何实现呢?如何构建这个查询?
谢谢。
如果查询表单的结构保持不变,您可以构建一个忽略未设置字段限制的单个大条件:
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)
);