Я получаю массив строк, для которых я хочу увидеть, все ли в определенном количестве полей данных в объекте домена эти струны. Я знаю поля данных во время компиляции, но я не знаю размер массива во время компиляции.
Есть ли способ составить предложение 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"}
вернет оба а также.