使用winform复选框进行linq查询

时间:2016-07-19 15:38:38

标签: c# winforms entity-framework linq checkbox

希望我以正确的方式提出这个问题。

我正在尝试确定使用复选框来更改从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语句考虑每个复选框的组合?

提前致谢!

2 个答案:

答案 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();