Я пытался решить синтаксис для динамического запроса linq, который необходим в моем приложении.
У меня есть динамический запрос, для которого необходимо указать предложение where.
- GuidPrimaryKey содержится в списке Guid ИЛИ
- GuidPrimaryKey равен элементу в списке Guid (с использованием некоторого типа цикла for)
У меня есть Guid[], содержащий более 5000 ключей. Мой запрос настроен как
Если я сделаю это (в качестве теста), это будет успешным
data = data.where("GuidPrimaryKey.Equals(@0)",array[0]);
так же как
data = data.where("GuidPrimaryKey.Equals(@0) OR GuidPrimaryKey.Equals(@1)",array[0], array[1]);
Я пробовал: data = data.where("GuidPrimaryKey.Contains(@0)",array);
, но это дает ошибку: не существует применимого метода «Содержит» в типе «Guid».
Я также попытался настроить цикл для прохождения элементов в массиве и установить предложение where в виде гигантской строки, но это тоже не сработало.
string s = "";
string p = ""
int counter = 0;
foreach(Guid g in Array)
{
s+= "GuidPrimaryKey.Equals(@" counter.ToString() + ") OR";
p += "Array[" counter.ToString() + "],";
counter++;
}
s = s.remove(s.length - 3, 3);
p = p.remove(p.length - 1, 1);
data = data.Where(s,p);
Это дает мне сообщение об ошибке: Нет свойства или поля "1" не существует в типе "DynamicClass1"
Есть идеи? Мне нужно, чтобы предложение where создавало запрос, чтобы проверить, существует ли первичный ключ (GuidPrimaryKey) в списке ключей (Guid[]).
data = data.where("@0.Contains(GuidPrimaryKey)",array);
- person Robert McKee   schedule 11.06.2014