Условный запрос LINQ в foreach - PullRequest
0 голосов
/ 16 января 2011

У меня есть окно с несколькими выборками, и я хотел бы перебрать выбранные элементы и выполнить запрос linq, но я не уверен, как его написать.Это то, что у меня есть:

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

Мне в основном нужно построить запрос ИЛИ, поэтому он выбирает из коллекции, где есть значения для каждого из выбранных элементов.Я думаю, что, как написано сейчас, он выполняет запрос AND.

Ответы [ 2 ]

0 голосов
/ 16 января 2011
var attributes=
  vdc.attributes.Where(q=> 
                   lbStateLegislation.Items.Any(o=> o.Value == q.fieldValue))
                 .Select(o=> o);
0 голосов
/ 16 января 2011

Просто используйте метод расширения Contains. Linq2Sql переведет его как предложение IN:

var inValues = lbStateLegislation.Items.Select(s => s.Value);
vdc.attributes.Where(a => inValues.Contains(a.fieldvalue));

Возможно, вы сможете объединить два утверждения в одно, но я оставлю это для вас, чтобы попытаться, поскольку я не уверен, что это будет работать как одно утверждение.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...