希望我以正确的方式提出这个问题。
我正在尝试确定使用复选框来更改从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语句考虑每个复选框的组合?
提前致谢!
答案 0 :(得分:1)
由于你有单独的属性,你仍然需要hceck每个 - 但你可以同时考虑每个复选框组合:
public void SetName(Name name){
_fName = name.FirstName;
_ lName = name.LastName;
}
答案 1 :(得分:1)
您可以这样做:
var query = cb.MakeModelYear;
if (chkYear.Checked)
query = query.Where(i => i.Year != null);
if (chkMake.Checked)
query = query.Where(i => i.Make != null);
if (chkModel.Checked)
query = query.Where(i => i.Model != null);
var uniquecombos = query.Distinct().ToList();