C# LINQ lambda表达式不工作

C# LINQ lambda表达式不工作,c#,linq,lambda,expression,C#,Linq,Lambda,Expression,我有下面的Linq表达式 var orderByLambda = Expression.Lambda<Func<Queue, int>>( nullCheckExpression, parameterExpression); queue = context.Table .Join(context.tablea, cq => cq.a, r => r.a, (cq, r) => new { cq, r }) .Join(conte

我有下面的Linq表达式

var orderByLambda = Expression.Lambda<Func<Queue, int>>(
    nullCheckExpression, parameterExpression);

queue = context.Table
    .Join(context.tablea, cq => cq.a, r => r.a, (cq, r) => new { cq, r })
    .Join(context.tableb, s => s.r.b, se => se.b, (s, se) => new { s, se })
    .Join(context.tablec, u => u.s.cq.c, us => us.c, (u, us) => new { u, us })
    .Where(cq => cq.u.s.cq.c == Utilities.Authentication.c)
    .Where(cq => buildStatusOrder.Contains((BuildStatusEnum)cq.u.s.cq.d))
    .OrderBy(o => o.u.se.b)
    .Select(s => new QueueInfo
    {
        x = s.u.c,
        y = s.u.d,
        z = s.u.a
    });

queue = queue.OrderBy(f => orderByLambda);

var concat = queue.GroupBy(e => new { e.x, e.y, e.z })
    .OrderBy(v => v.FirstOrDefault().segmentID)
    .ToList()
    .Select(ss => new QueueInfo
    {
        x = ss.x,
        y = ss.y,
        z = ss.z,
    })
    .AsQueryable();
我的代码出了什么问题?

而不是

queue = queue.OrderBy(f => orderByLambda);
使用:


关于代码的两个注释:

  • LINQtoEntities(实体框架)希望将查询转换为SQL,因此它只能执行知道如何转换的操作。例如,您不能使用最常见的LINQ收集方法,例如
    包含
  • 您已经定义了一个lambda对象,但没有定义实际表达式用于排序的功能,或者至少没有向我们展示
    nullCheckExpression
    parameterExpression
    是什么。一般来说,这不是您将LINQ排序为实体的方式——它应该类似于
    queue.OrderBy(f=>f.x)-您必须定义所选字段中实际用于排序的字段。(见第1点)

  • 你仍然没有按照哈比卜的建议修复。这是导致错误的那条线。
    queue = queue.OrderBy(f => orderByLambda);
    
    queue = queue.OrderBy(orderByLambda);