Составление предложения where в запросе LINQ во время выполнения

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

Есть ли способ составить предложение where во время выполнения, чтобы я мог делать то, что ищу, в одном запросе linq.

Если вам интересно, почему это один запрос: I хотите максимально сократить количество обращений к базе данных.

public IEnumerable<domainObjects> GetObjectsWith(string[] data)
{
    var results = from d in domainObjects
                  where 
                  (d.Data.Contains(data[0]) && d.Data.Contains(data[1]) && ...)
                  ||
                  (d.Data2.Contains(data[0]) && d.Data.Contains(data[1]) && ...)
                  .
                  .
                  . // Data fields known at compile-time
}

Конечным результатом будет 2 объекта:

domainObject  { Address = "1st st", Description="has couch and bed" }
domainObject2 { Address = "1st rd", Description="has couch" }

Запрос для {"диван", "кровать"} вернет только domainobject 1, но запрос для {"couch"} вернет оба.

Например, запрос для {"1st", "couch", "bed"} вернет оба а также.

5
задан abatishchev 10 September 2010 в 20:38
поделиться