gpt4 book ai didi

c# - 无法让动态 OrderBy 在我的通用列表上工作

转载 作者:行者123 更新时间:2023-11-30 14:30:35 24 4
gpt4 key购买 nike

我无法让动态 OrderBy 在我的通用列表上工作;

var list = CacheObjects.CompetencyAssessments
.Select(x => new CompetencyAssessmentLineViewModel(x))
.ToList();

var sortInfo = string.Format("{0} {1}", request.SortingName, request.SortingOrder);

var displayList = list.AsQueryable()
.OrderBy(sortInfo)
.Skip(startIndex)
.Take(pageLength);

我将字符串用于 OrderBy 的动态功能。但是代码无法编译;

Error 1 The type arguments for method 'System.Linq.Queryable.OrderBy(System.Linq.IQueryable, System.Linq.Expressions.Expression>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

我做错了什么?

方法的签名是:

public JsonResult GridData(JqGridRequest request)

JqGridRequest来自NuGet包Lib.Web.Mvc。所以:

  • request.SortingName 是字段名称的字符串,
  • request.SortingOrder为排序顺序

参见:http://tpeczek.com/2011/03/jqgrid-and-aspnet-mvc-strongly-typed.html

最佳答案

我怀疑您将 IEnumerable 和 IQueryable 与 Dynamic LINQ 混淆了6 年前 Scott Guthrie 提到的图书馆。这是您必须添加到项目中的外部库。其最新版本发布为 a NuGet package 2年前。

图书馆有一些限制,所以另一个System.Linq.Dynamic项目去年出现在 Codeplex 中。

这两个库都不是官方的、受支持的 LINQ 提供程序。如果它们方便,您可以使用它们,但您不应该经常更新它们。

实际上,由于您似乎正在构建一个 ASP.NET MVC 应用程序,所以在 View 或 Javascript 中对结果进行排序可能比在服务器端尝试这样做更好。大多数网格允许按列排序。

如果您想对结果进行排序以进行分页,更好的选择是使用您的 ORM 语言,例如 Entity Framework 的实体 SQL 或 NHibernate 的 HQL。

关于c# - 无法让动态 OrderBy 在我的通用列表上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22411089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com