var viewModel = new CoachIndexData();
viewModel.Coaches = db.Coaches
.Include(i => i.Courses.Select(c => c.Department))
.OrderBy(i => i.LastName);
我无法理解如何做到这一点。我是ASP.NET MVC的新手
答案 0 :(得分:3)
取自Cannot convert lambda expression to type 'string' because it is not a delegate type
这对我有用。
使用Entity Framework 4.1的Include()方法具有扩展方法,并且它还接受lambda表达式。所以
context.CustomerSites.Include(c => c.Customer);
完全有效,您需要做的就是使用它:
using System.Data.Entity;
答案 1 :(得分:1)
你的问题在于这一行:
.Include(i => i.Courses.Select(c => c.Department))
如documentation中所述,Include
方法需要字符串参数而不是lambda表达式。
您需要向Include
提供指向"导航"的路径。 (即,如何在您的上下文中设置导航属性)到所需信息。在你的情况下,我相信这将是:
.Include("Department")
希望有所帮助。
答案 2 :(得分:0)
我有同样的问题,我用以下
解决了using System.Linq.Dynamic;
using System.Linq;
代码在这里..
public IPagedList<Inv_AMC> Gets(int? page, int? pageSize, string sort = "Id", string sortdir = "DESC", string searchKey = "")
{
int pageIndex = page.HasValue ? Convert.ToInt32(page) : 1;
int pageSizeValue = pageSize.HasValue ? Convert.ToInt32(pageSize) : 10;
return dbSet.Where(x => (x.Customer.CustomerName.ToUpper().Contains(searchKey.ToUpper()) || searchKey == ""))
.OrderBy(sort + " " + sortdir)
.ToPagedList(pageIndex, pageSizeValue);
}
其中Inv_AMC和Customer是db对象并互相引用。