我知道目前编译器不喜欢这个语句。得到错误
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
我的声明我正在传递给我的存储库类
var qry = repositoryClass.Find(c => c.Categories.Where(d => d.CategoryParentID == typeID));
存储库类查找方法
public IEnumerable<SomeModels> Find(Func<SomeModels, bool> exp)
{
return (from col in _db.SomeModels where exp select col);
}
答案 0 :(得分: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);
然后将lambda翻译成Expression<...>
。
如果您的设置更复杂,请澄清。
答案 1 :(得分:0)
我刚在我的Repository Class中添加了一个方法
public IEnumerable<Models> GetByCategory(int categoryID)
{
var qry = _db.ModelCategories.Where(p => p.CategoryID == categoryID).First();
qry.Models.Load();
return qry.Models;
}
我猜是因为需要加载这是最好的方法。