Отказ от ответственности: я решил проблему, используя выражения из System.Linq.Expressions, но я все еще ищу лучший/более простой способ.
Рассмотрим следующую ситуацию:
var query =
from c in db.Customers
where (c.ContactFirstName.Contains("BlackListed") ||
c.ContactLastName.Contains("BlackListed") ||
c.Address.Contains("BlackListed"))
select c;
Столбцы/атрибуты, которые необходимо проверить на соответствие термину из черного списка, доступны мне только во время выполнения. Как создать это динамическое предложение where?
Дополнительная сложность заключается в том, что коллекция Queryable (db.Customers выше) типизирована для Queryable базового класса «Customer» (скажем, «Person»), и поэтому писать c.Address, как указано выше, нельзя.