LINQ过滤器值基于CheckBoxList的选定值

时间:2011-11-09 16:58:18

标签: c# asp.net linq

我正在尝试使用动态生成的CheckBoxList中的值的where子句作为LINQ查询的过滤条件。

有四个字段需要根据CheckBoxList的值进行过滤。

我如何浏览每个字段并将其与CheckboxList的选定值进行比较?

我添加了“checkBoxListTreeTypes.selectecd values”作为示例。

以下示例代码......

    IEnumerable<IGrouping<string, Forest>> forestQuery =
    from test in forest
    where (test.tree1 == checkBoxListTreeTypes.selectedvalues)
    && (test.tree2 == checkBoxListTreeTypes.selectecdvalues)
    && (test.tree3 == checkBoxListTreeTypes.selectecdvalues)
    && (test.tree4 == checkBoxListTreeTypes.selectecdvalues)
    orderby test.name
    group test by test.TrunkSize;

1 个答案:

答案 0 :(得分:0)

这是你通过CheckBoxList的方式(未经过测试,但你明白了):

checkBoxListTreeTypes.Items.Any(item => item.Selected && item.Value==test.tree1) &&
checkBoxListTreeTypes.Items.Any(item => item.Selected && item.Value==test.tree2) &&
checkBoxListTreeTypes.Items.Any(item => item.Selected && item.Value==test.tree3) &&
checkBoxListTreeTypes.Items.Any(item => item.Selected && item.Value==test.tree4)

您还可以将四棵树放在一个数组中:

string[] trees = new string[] { test.tree1, test.tree2, test.tree3, test.tree4 };

然后测试:

checkBoxListTreeTypes.Items.Count(item => item.Selected && trees.Contains(item.Value)) == 4