Entity framework 如何动态更改lambda表达式中的属性

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

我在下面写了一个函数。在第二行代码中,我编写了“Where(t=>t.PickTicket==EmployeeId)”。我想动态更改(t.PickTicket)属性。我怎样才能做到这一点???我怎样才能使下面的代码更好、更短

提前谢谢

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);