首页 > 解决方案 > 从 IOrderedQueryable 转换 IQueryable

问题描述

我正在使用 IQueryable 接口设置 CreateFilteredQuery。我必须返回一个 IQueryable 值,但我通过 OrderBy 函数获得了 IOrderedQueryable。有没有办法将该订单的所有合理数据(不是订单格式和那些不必要的数据)复制到 IQueryable 中?

我几乎尝试了一切。我无法更改返回值,因为这些函数也适用于另一个“过滤器”。

我正在尝试对最初是字符串列但填充了数字的列进行排序,因此我必须先解析为 Int,然后再解析为 orderby。(如果我不这样做,如果我订购结果将是:1 2 20 22 3 而不是 1 2 3 20 22)

我用创建了“tareas” base.CreateFilteredQuery(input),并且在解析为 int 之前尝试按 externalId 排序

if (input.Sorting == "externalId asc")
{
    var tareasOrdenadas = (tareas.ToList()).OrderBy(t => int.Parse(t.ExternalId));
    return tareasOrdenadas;
}

我期望System.Data.Entity.DbSetor的输出IQueryable。直到这一刻我有System.Linq.OrdenedEnumerable或者只是简单地IOrderedEnumerable

PD:当我在其他过滤器中修改“tareas”时,我有一个“System.Linq.IQueryable 类型的 System.Data.Entity.Infrastructure.DbQuery 值”

我需要一个 IQueryable 类型,而不是 IOrderedEnumerable,AsQueryable() 不起作用

PD2:谢谢大家的帮助。很抱歉没有回复,我几天不在办公室。我会尽力你给我的一切,谢谢大家。

快乐编码

标签: c#linqiqueryable

解决方案


您可以在 IEnumerable 序列上调用 .AsQueryable() ,它将返回 IQueryable


推荐阅读