必须在方法“Skip”异常之前调用方法“OrderBy”

2023-12-28

我试图实施jQgrid using MvcjQgrid我得到了这个例外。

System.NotSupportedException was unhandled by user code
  Message=The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'.

虽然 OrdeyBy 在 Skip 方法之前使用,但为什么它会生成异常?怎么解决呢?

我在控制器中遇到了异常:

public ActionResult GridDataBasic(GridSettings gridSettings)
        {          
            var jobdescription = sm.GetJobDescription(gridSettings);
            var totalJobDescription = sm.CountJobDescription(gridSettings);

            var jsonData = new
            {
                total = totalJobDescription / gridSettings.PageSize + 1,
                page = gridSettings.PageIndex,
                records = totalJobDescription,
                rows = (
                    from j in jobdescription
                    select new
                    {
                        id = j.JobDescriptionID,
                        cell = new[] 
                    { 
                        j.JobDescriptionID.ToString(), 
                        j.JobTitle,
                        j.JobType.JobTypeName,
                        j.JobPriority.JobPriorityName,
                        j.JobType.Rate.ToString(),
                        j.CreationDate.ToShortDateString(),
                         j.JobDeadline.ToShortDateString(),

                    }
                    }).ToArray()
            };
            return Json(jsonData, JsonRequestBehavior.AllowGet);
        }

获取作业描述方法 and 计数作业描述方法

public int CountJobDescription(GridSettings gridSettings)
        {
            var jobdescription = _dataContext.JobDescriptions.AsQueryable();

            if (gridSettings.IsSearch)
            {
                jobdescription = gridSettings.Where.rules.Aggregate(jobdescription, FilterJobDescription);
            }
            return jobdescription.Count();
        }

        public IQueryable<JobDescription> GetJobDescription(GridSettings gridSettings)
        {
            var jobdescription = orderJobDescription(_dataContext.JobDescriptions.AsQueryable(), gridSettings.SortColumn, gridSettings.SortOrder);

            if (gridSettings.IsSearch)
            {
                jobdescription = gridSettings.Where.rules.Aggregate(jobdescription, FilterJobDescription);
            }

            return jobdescription.Skip((gridSettings.PageIndex - 1) * gridSettings.PageSize).Take(gridSettings.PageSize);
        }

最后FilterJobDescription 和 OrderJobDescription

private static IQueryable<JobDescription> FilterJobDescription(IQueryable<JobDescription> jobdescriptions, Rule rule)
        {
            if (rule.field == "JobDescriptionID")
            {
                int result;
                if (!int.TryParse(rule.data, out result))
                    return jobdescriptions;
                return jobdescriptions.Where(j => j.JobDescriptionID == Convert.ToInt32(rule.data));

            }

// Similar Statements

            return jobdescriptions;
        }



private IQueryable<JobDescription> orderJobDescription(IQueryable<JobDescription> jobdescriptions, string sortColumn, string sortOrder)
        {
            if (sortColumn == "JobDescriptionID")
                return (sortOrder == "desc") ? jobdescriptions.OrderByDescending(j => j.JobDescriptionID) : jobdescriptions.OrderBy(j => j.JobDescriptionID);

            return jobdescriptions;
        }

该例外意味着您always如果您申请,需要排序输入Skip,也是在用户没有单击要排序的列的情况下。我可以想象,当您第一次打开网格视图时,在用户甚至可以单击列标题之前,没有指定排序列。为了捕捉这种情况,我建议在没有给出其他排序标准时定义一些您想要的默认排序,例如:

switch (sortColumn)
{
    case "JobDescriptionID":
        return (sortOrder == "desc")
            ? jobdescriptions.OrderByDescending(j => j.JobDescriptionID)
            : jobdescriptions.OrderBy(j => j.JobDescriptionID);

    case "JobDescriptionTitle":
        return (sortOrder == "desc")
            ? jobdescriptions.OrderByDescending(j => j.JobDescriptionTitle)
            : jobdescriptions.OrderBy(j => j.JobDescriptionTitle);

    // etc.

    default:
        return jobdescriptions.OrderBy(j => j.JobDescriptionID);
}

Edit

根据您的评论,关于您的后续问题:您无法使用ToString()在 LINQ to Entities 查询中。下一个问题是你无法创建一个string查询中的数组。我建议使用其本机类型从数据库加载数据,然后将其转换为内存中的字符串(以及字符串数组):

rows = (from j in jobdescription
        select new
        {
            JobDescriptionID = j.JobDescriptionID,
            JobTitle = j.JobTitle,
            JobTypeName = j.JobType.JobTypeName,
            JobPriorityName = j.JobPriority.JobPriorityName,
            Rate = j.JobType.Rate,
            CreationDate = j.CreationDate,
            JobDeadline = j.JobDeadline
        })
        .AsEnumerable() // DB query runs here, the rest is in memory
        .Select(a => new
        {
            id = a.JobDescriptionID,
            cell = new[] 
            { 
                a.JobDescriptionID.ToString(), 
                a.JobTitle,
                a.JobTypeName,
                a.JobPriorityName,
                a.Rate.ToString(),
                a.CreationDate.ToShortDateString(),
                a.JobDeadline.ToShortDateString()
            }
        })
        .ToArray()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

必须在方法“Skip”异常之前调用方法“OrderBy” 的相关文章

随机推荐

  • 更新 Spring 版本后上下文初始化失败

    我最近将 Spring 版本从 3 2 4 RELEASE 更新到 4 0 7 RELEASE 从那时起我在加载上下文时收到此错误 请告诉我在更新 spring 版本后是否需要对 context xml 进行任何更改 这里是复仇者流上下文
  • asm.js 如何处理被零除?

    在 javascript 中 使用 整数 参数除以零的行为就像浮点应该 1 0 Infinity 1 0 Infinity 0 0 NaN asm js 规范规定 带有整数参数的除法返回intish 必须立即强制签名或未签名 如果我们在 j
  • 如何使
    水平布局?

    我正在尝试为我的网站开发一个布局 其中定义列表的元素将水平布局 有点像这样 term 1 term 2 term 3 definition 1 definition 2 definition 3 有人知道如何使用有效的 CSS 使定义列表看
  • 将在 MinGW 7 中使用的 VC Runtime 2017 中 scanf 函数系列的位置

    我在用 VS 2017 MinGW 与 GCC G 7 4 0 基本上发生的事情如下 使用 VS 2017 构建可执行文件 so 是用 GCC 构建的 so 由步骤 1 中创建的可执行文件加载 问题源于MSVCRT MinGW默认情况下链接
  • 本地工作中的 nuget 包

    在我们的产品中 我们有一些项目 几乎每一个都依赖于一个称为 核心 的核心 我们将每个项目作为单独的 nuget 包进行分发 对于部署 我们为其他团队 产品所做的工作 nuget 效果很好 但在我们的本地工作中这确实是一个很大的痛苦 每次 核
  • 使用 WebDriver 和 Ruby 与 JavaScript 下拉菜单交互?

    我正在使用 Ruby 和 Selenium WebDriver 为网页编写自动化 但遇到了网站上某些使用 JavaScript 而不是标准 HTML 制作的下拉菜单的阻塞问题 在这些下拉菜单中 用户可以从下拉菜单中选择一个选项 或者单击它并
  • 在 html5 画布上旋转单个图像(而不是其他图像)?

    我有一个精灵 我正在使用普通精灵表位块传输在 html 画布上制作动画 在某些关键事件上 我想更改精灵的方向 即翻转它或旋转 180 度 而不更改画布上的任何内容 其他精灵 有谁知道如何做到这一点 所以我的游戏遇到了这个问题 我有用于向上
  • 为 MSVC 预构建的 Boost 1.37

    我找不到 Boost 1 37 0 的一组预构建的 MSVC 库 只有源代码 我不明白他们奇怪的构建系统是如何工作的 有什么地方可以找到视觉工作室项目或其他东西的下载吗 The BoostPro 计算 http www boostpro c
  • Django objects.create 产生的输出比应有的要多

    有两个列表 主值
  • Angular 2 中的bundle.js.gz 文件是什么?

    我正在为我的应用程序使用 ng cli 当我运行 ng build prod 时 我得到两个文件 main budle js 和 main bundle js gz 第二个是什么 它有什么好处 服务器和客户端之间的 HTTP 传输几乎总是使
  • 将类型数组转换为通用数组?

    问题的简短版本 为什么我不能这样做 我仅限于 NET 3 5 T genericArray Obviously T should be float genericArray new T 3 1 0f 2 0f 0 0f Can t do t
  • 检查 ipv6 是否在范围内

    我有maxmind的ipv6数据 这是我当前的表 带有示例数据 network geoname id 2001 208 32 123 2001 218 32 4312 Using 他们的转换器 https github com maxmin
  • 为什么 HTTP 流量的明文错误 ERR_CLEARTEXT_NOT_PERMITTED 持续存在?

    我正在使用 Ionic 框架开发一个新应用程序 并使用 HttpClient 模块来处理 API 请求 问题是我已经阅读并尝试将解决方案应用于 https medium com son rommer fix cleartext traffi
  • 如何使用 javascript 或 jQuery 获取 iframe 之外的元素?

    我正在尝试使用 js 或 jQuery 从 iframe 外部获取元素 我发现了一些东西 但它不是跨浏览器的 div div class u flL iti act num 123456789 div div div div 我需要将该数字
  • 如何使用 XHR 发送附件(图像)和嵌套参数以在钛中上传文件?

    我正在尝试将手机照片库中的图像上传到服务器 图片库打开得很好 这是我的代码 var win Ti UI createWindow navBarHidden true var ind Titanium UI createProgressBar
  • 循环雪花数组

    我正在寻找一种从该集合中获取数据的方法 数据如下 0000000 gt GuildMember guild Guild members Object id 000000 name Zombie rawVoiceStates Object u
  • mysql提交数据为0?

    所以 我刚刚创建了一个简单的用户注册表单 这是它的代码 h2 Signup h2
  • gtk绘图集背景图像

    我有一个绘图区域和一个 png 图像 我想将该图像加载到我的绘图区域作为背景 屏幕比我的图像大 问题是它没有 平铺 我的图像 我尝试将图像添加为 pixbuf 和 pixmap 但没有帮助 我用这条线 gc set tile pixmap
  • Cryo 对 Spark SQL 有帮助吗?

    Kryo 通过高效的序列化方法帮助提高 Spark 应用程序的性能 我想知道 Kryo 对 SparkSQL 是否有帮助 以及我应该如何使用它 在 SparkSQL 应用程序中 我们将执行许多基于列的操作 例如df select c1 c2
  • 必须在方法“Skip”异常之前调用方法“OrderBy”

    我试图实施jQgrid using MvcjQgrid我得到了这个例外 System NotSupportedException was unhandled by user code Message The method Skip is o