Подобные очереди / ответы: Пользовательский метод в запросе LINQ to SQL
Проверьте эту полную статью: Что есть и что невозможно с linq
Следующее невозможно
// function used in filter
static bool MyFunc(Nwind.Product p)
{
return p.ProductName.StartsWith("B");
}
// query that uses MyFunc
var q =
from p in db.Products
where MyPriceFunc(p.UnitPrice) > 30m
select p
Компилируется без ошибок, но при выполнении LINQ to SQL выдает исключение, говорящее: «Статический метод System.Boolean MyTest (LINQTest.Nwind.Product)не поддерживает перевод на SQL. "
Исключение фактически выдается при попытке извлечь результаты из q (например, с помощью оператора foreach), потому что LINQ to SQL пытается преобразовать деревья выражений в T-SQL только тогда, когда нужны результаты изапрос должен быть выполнен.
Чтобы исправить пример, вы можете просто скопировать код, который проверяет, начинается ли название продукта с «B» в предложении where запроса, и он будет работать нормально.