Vexing linq to sql создание предиката в цикле for - PullRequest
0 голосов
/ 02 апреля 2009

Я строю запрос LINQ, используя цикл, который добавляет предикаты, используя массив:

foreach (string tag in tags)
{
    result = result.Where(p => (p.TagsDelimited).Contains("," + tag + ","));
}

Это создает все необходимые предложения, но каждое предложение сравнивает только последний элемент в массиве тегов, создавая sql

(((',' + [t0].[TagsDelimited]) + ',') LIKE '%,taglast,%') AND (((',' + [t0].[TagsDelimited]) + ',') LIKE '%,taglast,%')

вместо одного предложения для каждого тега.

Я могу обойти это, добавив

string temp = tag;

внутри цикла for с использованием temp вместо тега.

Вопрос: как это возможно!?

1 Ответ

1 голос
/ 02 апреля 2009

Лямбда фиксирует переменную, а не значение.

Для более подробного объяснения вы можете прочитать мой ответ на этот вопрос

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