foreach中的条件LINQ查询

时间:2011-01-15 21:29:36

标签: c# linq linq-to-sql

我有一个多选框,我想迭代选定的项目并执行linq查询,但我不知道如何编写它。这就是我到目前为止所做的:

if (lbStateLegislation.Items.Count > 0)
{
  foreach (ListItem li in lbStateLegislation.Items)
    attributes = vdc.attributes.Where(a => a.fieldvalue == li.Value).ToList();
}

我基本上需要构造一个OR查询,因此它从集合中选择每个所选项的值。我认为,正如现在所写,它正在进行AND查询。

2 个答案:

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