Я должен поместить метод в лямбду LINQ. У меня есть следующий код:
string productName = "Some product";
searchShoppingCart = shoppingCart.Where(m => productName.Equals(_ProductRepository.GetProductName(m.Id)));
В основном этот код используется для выбора всех shoppingCart
экземпляров, которые содержат productName
.
Метод string GetProductName(int shoppingCartId)
- это метод из _ProductRepository
, который возвращает имя одного продукта. Как этот метод реализован и его логика не имеет значения.
Проблема в том, что LINQ выдает исключение . Я знаю причины, по которым выбрасывается это исключение, я просто хотел бы найти обходной путь. Я пытался
var productContained = shoppingCart.Select(sc => new
{
scId = sc.Id,
productName = _ProductRepository.GetProductName(sc.Id)
});
searchShoppingCart = shoppingCart.Where(sc => sc.Id.Equals(productContained.Where(pc => pc.productName.Equals(productName))
.Select(pc => pc.Id)));
но это дает мне то же исключение. Есть ли другой обходной путь?
UPDATE
Исключение составляет
LINQ to Entities не распознает метод метода System.String GetProductName (Int32), и этот метод нельзя преобразовать в выражение хранилища.