Customer.text - это поле в БД T-SQL (которое я не контролирую и, следовательно, не могу изменить) типа «текст».
Я хотел бы сделать что-то вроде этого:
List<string> compare = new List<string>();
compare.Add("one");
compare.Add("two");
var q = from t in customer
where t.text.Contains( compare.First())
select t;
это будет работать.
Но теперь я хотел бы сделать что-то вроде: (! НЕ РАБОТАЕТ!)
var q = from t in customer
where compare.Contains( t.text )
select t;
Как мне этого добиться?Это вообще возможно?
РЕДАКТИРОВАТЬ: Проблема, очевидно, не совсем ясна: текстовый столбец в SQL не может быть запрошен с помощью «=», но только с LIKE.Таким образом, сравнение. Содержит (t.text) приведет к ошибке, поскольку он преобразуется в запрос с использованием "=".
То, что я не сказал - я думал, что это не имеет значения - это то, что яиспользуйте LINQ-to-ORM (в этом случае LLBLGen).Вместо этого я попробовал:
var q = from t in customer
where compare.Any( x => t.text.Contains(x) )
select t;
Теперь это тоже не сработало.В настоящее время я не на работе, но за исключением того, что ConstantExpression не может быть преобразовано в SetExpression.
Надеюсь, это дало некоторые пояснения.
EDIT2:
Джозеф указал мне на это: PredicateBuilder .Создает Expression для данного ObjectType.Теперь моя проблема в том, что мой тип является анонимным типом из нескольких соединений.Есть ли простой или элегантный способ справиться с этим?