请参阅以下代码:
Public Function GetMembers(Optional ByVal sortExpression As String = "MemberId ASC") As List(Of Member) 'Implements IMemberDao.GetMembers
Using context = New LibraryDBEntities()
Dim members = context.Members.AsQueryable.OrderBy(sortExpression).ToList
Return Mapper.Map(Of List(Of MemberEntity), List(Of Member))(members)
End Using
End Function
我得到的错误是:“重载解析失败,因为无法使用这些参数调用可访问的ORDERBY”。我是Entity Framework的新手。
答案 0 :(得分:0)
OrderBy需要一个Expression参数,而不是一个字符串。你应该写的是:
context.Members.AsQueryable().OrderBy(m => m.MemberId);
降序:
context.Members.AsQueryable().OrderByDescending(m => m.MemberId);
这告诉Entity Framework按Member类的MemberId属性排序(我假设Members属性是Member的Queryable)。 当然,那么你必须重写GetMembers()方法,以便将传递给它的sortExpression转换为有效的.Net Expression。
答案 1 :(得分:0)
实体框架不够动态,无法处理指定为字符串的排序条件。调用OrderBy
需要表达式,而不是字符串。表达式接受一个对象,并生成一个表达式,该表达式映射到要对输出进行排序的列:
Dim members = context.Members.AsQueryable.OrderBy(Function(member) member.MemberId).ToList
此外,您无法指定排序表达式中的排序是升序还是降序:对于按升序排序,请使用OrderBy
;按降序排序使用OrderByDescending
。