Entity framework 如何动态更改lambda表达式中的属性
我在下面写了一个函数。在第二行代码中,我编写了“Where(t=>t.PickTicket==EmployeeId)”。我想动态更改(t.PickTicket)属性。我怎样才能做到这一点???我怎样才能使下面的代码更好、更短 提前谢谢Entity framework 如何动态更改lambda表达式中的属性,entity-framework,Entity Framework,我在下面写了一个函数。在第二行代码中,我编写了“Where(t=>t.PickTicket==EmployeeId)”。我想动态更改(t.PickTicket)属性。我怎样才能做到这一点???我怎样才能使下面的代码更好、更短 提前谢谢 public List<TicketJoin> GetTicketJoin(string EmployeeId) { var query = _context.tickets.Where(t => t.Pi
public List<TicketJoin> GetTicketJoin(string EmployeeId)
{
var query = _context.tickets.Where(t => t.PickTicket == EmployeeId).Join
(
_context.employees, t => t.CreatedBy, e => e.EmployeeId, (t, e) => new
{
t.Id,
e.Employee_Name,
e.Department,
e.Location,
t.Subject,
t.MainCatId,
t.SubCatId,
t.PickTicket,
t.Status,
t.CreateDate
}).Join
(
_context.MainCategory, t => t.MainCatId, m => m.MainCatId, (t, m) => new
{
t.Id,
t.Employee_Name,
t.Department,
t.Location,
t.Subject,
t.MainCatId,
m.MainCatName,
t.SubCatId,
t.PickTicket,
t.Status,
t.CreateDate
}).Join
(
_context.SubCategory, t => t.SubCatId, s => s.SubCatId, (t, s) => new
{
t.Id,
t.Employee_Name,
t.Department,
t.Location,
t.Subject,
t.MainCatId,
t.MainCatName,
t.SubCatId,
s.SubCatName,
t.PickTicket,
t.Status,
t.CreateDate
}).ToList();
var TicketJoin = query.ToList().Select(r => new TicketJoin
{
EmployeeName = r.Employee_Name,
Subject = r.Subject,
Location = r.Location,
MainCatName = r.MainCatName,
SubCatName = r.SubCatName,
CreateDate = r.CreateDate
}).ToList();
return TicketJoin;
}
}
public List GetTicketJoin(字符串EmployeeId)
{
var query=\u context.tickets.Where(t=>t.PickTicket==EmployeeId).Join
(
_context.employees,t=>t.CreatedBy,e=>e.EmployeeId,(t,e)=>new
{
t、 身份证,
e、 员工姓名,
e、 部门,
e、 位置,
t、 主题,,
t、 维护,
t、 苏巴蒂德,
t、 扒票,
t、 地位,
t、 创建日期
}).加入
(
_context.maincegory,t=>t.MainCatId,m=>m.MainCatId,(t,m)=>new
{
t、 身份证,
t、 员工姓名,
t、 部门,
t、 位置,
t、 主题,,
t、 维护,
m、 MainCatName,
t、 苏巴蒂德,
t、 扒票,
t、 地位,
t、 创建日期
}).加入
(
_context.SubCategory,t=>t.SubCatId,s=>s.SubCatId,(t,s)=>new
{
t、 身份证,
t、 员工姓名,
t、 部门,
t、 位置,
t、 主题,,
t、 维护,
t、 MainCatName,
t、 苏巴蒂德,
s、 子目录名,
t、 扒票,
t、 地位,
t、 创建日期
}).ToList();
var TicketJoin=query.ToList()。选择(r=>new TicketJoin
{
EmployeeName=r.Employee\u Name,
主语,主语,
位置=r.位置,
MainCatName=r.MainCatName,
SubCatName=r.SubCatName,
CreateDate=r.CreateDate
}).ToList();
退票加入;
}
}
我如何缩短它?
通过使用数据库视图隐藏所有这些连接。在这种情况下,只有一个条件的简单查询
我怎样才能使它充满活力?
你真的需要它吗?您可以这样做:
public List<TicketJoin> GetTicketJoin(Expression<Func<Ticket, bool>> condition)
{
var query = _context.Tickets.Where(condition)...
}
它不是完全动态的,但允许调用指定条件的代码
完全动态的解决方案,您将能够通过字符串形式传递属性名称,这需要使用表达式树来构建查询。以前也有用于此目的的动态Linq库。谢谢你救了我,我对表达式条件有一个小问题。这显示返回类型bool,但iam返回列表。另一个是表达式在其他场景中的作用???非常感谢您的及时帮助。本例中的表达式仅用于评估条件,不会影响您的结果集。第一个Func类型参数必须是执行条件的类型,第二个必须是bool,因为条件是由boolean驱动的。
var result = this.GetTicketJoin(t => t.PickTicket == employeeId);