我有一个多选框,我想迭代选定的项目并执行linq查询,但我不知道如何编写它。这就是我到目前为止所做的:
if (lbStateLegislation.Items.Count > 0)
{
foreach (ListItem li in lbStateLegislation.Items)
attributes = vdc.attributes.Where(a => a.fieldvalue == li.Value).ToList();
}
我基本上需要构造一个OR查询,因此它从集合中选择每个所选项的值。我认为,正如现在所写,它正在进行AND查询。
答案 0 :(得分:0)
只需使用Contains扩展方法即可。 Linq2Sql将其翻译为IN子句:
var inValues = lbStateLegislation.Items.Select(s => s.Value);
vdc.attributes.Where(a => inValues.Contains(a.fieldvalue));
你可以将这两个陈述合并为一个,但我会留给你试试,因为我不肯定它会作为一个单一的陈述。
HTH
答案 1 :(得分:0)
var attributes=
vdc.attributes.Where(q=>
lbStateLegislation.Items.Any(o=> o.Value == q.fieldValue))
.Select(o=> o);