То, что вы хотите сделать, похоже, не имеет смысла в контексте того, что на самом деле делает SqlMethods.Like.Когда вы передаете свойство класса, вы по сути говорите ему преобразовать его в эквивалентное поле в запросе SQL.Например,
var result = from names in db.Names
where SqlMethods.Like(names.FullName, '%Smith%')
select names;
будет выглядеть примерно так:
SELECT *
FROM Names
WHERE Fullname LIKE '%Smith%'
(на практике это будет отличаться, если использовать параметры и sp_executeSQL, но по сути это то, что он будет делать).1008 * Если вы хотите передать имя свойства, что это значит с точки зрения SQL, концептуально это не имеет смысла, например:
SELECT *
FROM Names
WHERE --what would go here-- LIKE '%Smith%'
Таким образом, вы не сможете создать LinqК методу SQL, который создает бессмысленный SQL.
Что вы на самом деле пытаетесь сделать, есть вероятность, что вы делаете это совершенно неправильно.
Редактировать: хм из вашего комментария, я думаюя понимаю, что вы хотите сделать, в сущности, вы хотите иметь возможность указать столбец, с которым вы сравниваете LIKE во время выполнения.Вы не можете сделать это точно.Вы можете использовать хранимую процедуру, которая использует динамический SQL и принимает строковый параметр для столбца.Затем вы можете представить это как метод в своем классе контекста данных.