【发布时间】:2014-12-18 14:38:52
【问题描述】:
我首先使用实体框架设计器,我需要从 db 对象开始创建自定义模型对象。 我不想使用 IEnumerable,因为它会查询太多字段。
目标是删除此函数中的内部选择:
using (var db = new dbEntities())
{
var departments= db.departments
.Include(p => p.employee)
.Where(...)
.Select(p => new CustomDepartmentModel()
{
ID = p.ID,
Employees = p.employee
.Select(q => new CustomEmployeeModel()
{
ID = q.ID,
Name= q.Name
}).ToList()
});
return departments.ToList();
}
通过使用此功能:
public static IQueryable<CustomEmployeeModel> ToModel(this IQueryable<employee> Employee)
{
return Employee.Select(u => new CustomEmployeeModel()
{
ID = u.ID,
Name = u.Name
});
}
但我总是收到错误消息:“LINQ to Entities 无法识别方法 ToModel”。
我确实尝试以这些方式使用它,但没有运气:
Employees = p.employee.AsQueryable().ToModel().ToList() //1
Employees = db.Entry(p).Collection(f => f.employee).Query().ToModel().ToList() //2
我认为我需要使用这样的东西:
public static System.Linq.Expressions.Expression<Func<IQueryable<employee>, IQueryable<CustomEmployeeModel>>> ToModel()
{
return p => p.Select(u => new CustomEmployeeModel()
{
ID = u.ID,
Name = u.Name
});
}
但是我真的不知道怎么用。
【问题讨论】:
标签: c# linq entity-framework linq-to-entities linq-expressions