希望我以正确的方式提出这个问题。
我正在尝试确定使用复选框更改从我的 linq 查询返回的内容的最有效方法,而无需为每个可能的组合编写代码。
例如,我的 winform 上有三个复选框,代表我要查询的三列
[ ] 年
[ ] 制作
[ ] 型号
我正在使用 linq 语句通过 EF 确定年份品牌和型号的不同组合
var uniquecombos = cb.MakeModelYear.Where(i => i.Year != null && i.Make != null && i.Model != null).Distinct().ToList();
我想做的是使用我的 winform 上的复选框来驱动我在查询中包含哪些字段。
所以
[x] 年
[x] 制作
[ ] 型号
会产生
var uniquecombos = cb.MakeModelYear.Where(i => i.Year != null && i.Make != null).Distinct().ToList();
有没有一种好方法可以修改查询的输入,而不必通过 if 语句考虑复选框的每个组合?
提前致谢!
最佳答案
由于您有单独的属性,您仍然需要检查每个 - 但您可以同时考虑每个复选框组合:
.Where(i => (
(!cbxYear.Checked || i.Year != null) &&
(!cbxMake.Checked || i.Make != null) &&
(!cbxModel.Checked || i.Model != null)
)
关于c# - 使用 winform checkbox 进行 linq 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462981/