Я строю запрос 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 вместо тега.
Вопрос: как это возможно!?