Итак, вы можете динамически построить запрос, используя что-то вроде этого (взято из PhluffyFotos sample):
Expression<Func<PhotoTagRow, bool>> search = null;
foreach (var tag in tags)
{
var id = tag.Trim().ToLowerInvariant();
if (String.IsNullOrEmpty(id))
{
continue;
}
Expression<Func<PhotoTagRow, bool>> addendum = t => t.PartitionKey == id;
if (search == null)
{
search = addendum;
}
else
{
search = Expression.Lambda<Func<PhotoTagRow, bool>>(Expression.OrElse(search.Body, addendum.Body), search.Parameters);
}
}
Теперь, когда у вас есть 'search', вы можете просто передатьэто как предикат в вашем предложении Where.
Однако , я хочу убедить вас не делать этого.Я отвечаю на ваш вопрос, но говорю вам, что это плохая идея сделать несколько '|'ИЛИ предложение в таблице хранения.Причина в том, что, по крайней мере, сегодня эти запросы нельзя оптимизировать, и они вызывают полное сканирование таблицы.Производительность будет ужасной с любым нетривиальным количеством данных.Кроме того, если вы создаете свои предикаты динамически, как это, вы рискуете нарушить ограничение URL (имейте это в виду).
Этот код в PhluffyFotos показывает, как, но на самом деле это плохая практика (я знаю,Я это написал).Он действительно должен быть оптимизирован для параллельного запуска каждого предложения OR.Вот как вы действительно должны это делать.Предложения AND в порядке, но предложения OR должны быть распараллелены (используйте PLINQ или TPL), и вы должны агрегировать результаты.Это будет намного быстрее.
HTH.