C# Linq-LET与动态Linq-OrderBy

C# Linq-LET与动态Linq-OrderBy,c#,.net,linq,nhibernate,C#,.net,Linq,Nhibernate,我在nhibernate中使用linq,当我尝试使用OrderBy使用动态linq时遇到问题: var bugAndFeatures = (from u in session.Query<BugAndFeature>() let uEmployeeFullName = string.Format("{0} {1}", u.Employee.Surname, u.Employee.FirstName)

我在nhibernate中使用linq,当我尝试使用OrderBy使用动态linq时遇到问题:

        var bugAndFeatures = (from u in session.Query<BugAndFeature>()
                              let uEmployeeFullName = string.Format("{0} {1}", u.Employee.Surname, u.Employee.FirstName)
                              where u.IsDelete == false
                              select new BugAndFeatureView()
                              {
                                  Id = u.Id,
                                  Title = u.Title,
                                  Description = u.Description,
                                  EmployeeFullName = uEmployeeFullName,
                                  EmployeeLogin = u.Employee.User.Login,
                                  AssignedEmployeeId = u.AssignedEmployee == null ? 0 : u.AssignedEmployee.Id,
                                  AssignedEmployeeFullName = string.Format("{0} {1}", u.AssignedEmployee.Surname, u.AssignedEmployee.FirstName),
                                  CreateDate = u.CreateDate.Equals(null) ? string.Empty : u.CreateDate.ToString(),
                                  LastUpdateDate = u.LastUpdateDate.Equals(null) ? string.Empty : u.LastUpdateDate.ToString()
                              }
                     );
var bugAndFeatures=(来自会话中的u.Query()
设uEmployeeFullName=string.Format(“{0}{1}”,u.Employee.LANSAME,u.Employee.FirstName)
其中u.IsDelete==false
选择新BugAndFeatureView()
{
Id=u.Id,
标题=美国标题,
描述=美国描述,
EmployeeFullName=UEEmployeeFullName,
EmployeeLogin=u.Employee.User.Login,
AssignedEmployeeId=u.AssignedEmployee==null?0:u.AssignedEmployee.Id,
AssignedEmployeeFullName=string.Format(“{0}{1}”,u.AssignedEmployee.姓氏,u.AssignedEmployee.FirstName),
CreateDate=u.CreateDate.Equals(null)?string.Empty:u.CreateDate.ToString(),
LastUpdateDate=u.LastUpdateDate.Equals(null)?string.Empty:u.LastUpdateDate.ToString()
}
);
之后,我想使用动态linq和OrderBy,比如OrderBy(“EmployeeFullName DESC”),但我不能这样做,因为我有一个异常。 我注意到,当我在任何属性上执行OrderBy时,我没有格式化或检查null等。我没有这个问题,只有当我尝试使用格式化的属性执行OrderBy时才会出现这个问题。 如果我在OrderBy之前执行ToList(),那么我没有这个问题,但我不想这样做,我需要使用IQueryable

如何修改此查询以解决我的问题


谢谢您的帮助。

您是否尝试过这样做:

var Results = bugAndFeatures.ToList().OrderBy(p => p.EmployeeFullName);

 IQueryable<Foo> query = ...;

 switch (orderByParameter)
                {
                    case "SomeValueParamter":
                        query = query.OrderBy(x => x.SomeValueParamter);
                        break;
                    case "SomeValueParamter":
                        query = query.OrderBy(x => x.SomeValueParamter);
                        break;
                    // etc
                }
var Results=bugAndFeatures.ToList().OrderBy(p=>p.EmployeeFullName);
IQueryable查询=。。。;
开关(orderByParameter)
{
案例“SomeValueParameter”:
query=query.OrderBy(x=>x.someValueParameter);
打破
案例“SomeValueParameter”:
query=query.OrderBy(x=>x.someValueParameter);
打破
//等
}

看看我不想在这一步做ToList我需要IQueryable,也需要使用动态linq。我尝试使用扩展方法而不使用动态linq,但我仍然有同样的问题-我认为计算属性可以解决这个问题(正如我在使用OrderBy扩展方法或动态linq时提到的,我在格式化、检查某些内容或计算属性时遇到了相同的问题)