Я получаю массив строк, для которых я хочу посмотреть, есть ли все эти строки в определенном количестве полей данных в доменном объекте. Я знаю поля данных во время компиляции, но я не знаю размер массива во время компиляции.
Есть ли способ, которым я могу составить предложение where во время выполнения, чтобы я мог делать то, что я ищу, в одном запросе linq.
Если вам интересно, почему это один запрос: я хочу максимально сократить количество обращений к БД.
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" }
Запрос для { "couch", "bed" }
вернет только domainobject 1, но запрос для { "couch" }
вернет оба.
Likeqise запрос для { "1st", "couch", "bed" }
также будет возвращать оба.