2009-06-24 2 views
0

Я знаю, что в настоящее время компилятор не нравится этому утверждению. Получение ошибкиStumped on Entity Framework & Lambda Expressions

Cannot convert lambda expression to delegate type 'System.Func<MyData.Models.SomeModels,bool>' because some of the return types in the block are not implicitly convertible to the delegate return type 

мое заявление я передаю моему Repository класса

var qry = repositoryClass.Find(c => c.Categories.Where(d => d.CategoryParentID == typeID)); 

Repository Class Найти метод

 public IEnumerable<SomeModels> Find(Func<SomeModels, bool> exp) 
    { 
     return (from col in _db.SomeModels where exp select col); 
    } 
+0

Я не уверен, что это приемлемый способ сделать это, поэтому, пожалуйста, поделитесь лучшими практиками. Я еще не самый лучший в Лямбде. – OneSmartGuy

+0

Re comment - я не уверен на 100%, что модель выглядит, так трудно следовать ... но похоже, что вы можете захотеть c => c.Categories.Any (d => ...) –

ответ

0

Я просто добавил метод в моем Repository класса

public IEnumerable<Models> GetByCategory(int categoryID) 
    { 
     var qry = _db.ModelCategories.Where(p => p.CategoryID == categoryID).First(); 
     qry.Models.Load(); 

     return qry.Models; 
    } 

Я предполагаю, потому что он должен быть загружен это лучший способ пойти.

4

Для работы с EF вам нужно Expression<...>, применяется (как предикат) с Where:

public IEnumerable<SomeModels> Find(Expression<Func<SomeModels, bool>> exp) 
{ 
    return _db.SomeModels.Where(exp); 
} 

Вы бы тогда назвать это как:

var qry = repositoryClass.Find(c => c.CategoryParentID == typeID); 

Лямбда затем переводится в Expression<...>.

Если ваша установка более сложная, уточните пожалуйста.

+0

I У меня все еще возникают проблемы с repositoryClass.Find (c => c.Categories.Where (d => d.CategoryParentID == typeID)); Не уверен, если вы заметите, я пытаюсь получить модели по категориям. У меня есть категория, но пытаюсь увидеть, содержит ли Models.Categories. Это способ, которым я пытался сделать то, что в категории property – OneSmartGuy

+0

BTW Категории Свойство представляет собой список из-за того, что модель указана в нескольких категориях. – OneSmartGuy

Смежные вопросы