我正在尝试从Phil Haack here获取最终解决方案并使用他的杀手LINQ查询排序,但不是像他那样使用数据上下文,我想查询IEnumerable(Of T)...没有运气。
Public Function DynamicGridData(ByVal sidx As String, ByVal sord As String, ByVal page As Integer, ByVal rows As Integer) As ActionResult
Dim list As List(Of User) = UserService.GetUserCollection()
Dim FilteredAndSortedList = list.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize)
Return JSON(jsonData)
End Function
目前我的错误低于我的.OrderBy(sidx +“”+ sord)行
“扩展方法中的teh类型参数的数据类型'公共函数OrderBy(Of TKey)(keySelector As System.Func(Of User,TKey))As System.Linq.IOrderedEnumerable(Of User) “无法从这些参数中推断出'System.Linq.Enumerable'中定义的'。明确指定数据类型可能会纠正此错误。”
编辑:
我发现问题是上面示例中的“列表”不是IQueryable类型。简单地添加.AsQueryable()就可以了!#/ p>
Public Function DynamicGridData(ByVal sidx As String, ByVal sord As String, ByVal page As Integer, ByVal rows As Integer) As ActionResult
Dim list As List(Of User) = UserService.GetUserCollection()
Dim FilteredAndSortedList = list.AsQueryable().OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize)
Return JSON(jsonData)
End Function
答案 0 :(得分:2)
我不是肯定的,但我认为这与你将OrderBy传递给一个字符串而不是一个表达式(TDelegate)的事实有关。
看看这篇文章,看看它是否有帮助。
http://msdn.microsoft.com/en-us/library/bb549264.aspx
编辑:
我已经看过Phil的代码和Scott Gu提供的一些进一步的文档。您应该能够传入一个字符串,在其中排序。在这种情况下,我的下一个问题是,如果您按照订单执行您的应用程序是否有效?原因是我想知道我们是否还有另一个我们遗漏的潜在错误。比如你正在返回JSON(jsondata),但我不知道你在哪里初始化jsondata。现在我不认为这是你的错误,因为你说你在orderby语句上得到它。但是,如果您实际收到错误,因为您尝试订购的对象是空的,那么您还有另一个潜在问题。
答案 1 :(得分:0)