c# - 从其orderby子句中清除IQueryable

标签 c# linq

有没有办法从其ordeyby子句中清除IQueryable?

例如,我们有一个返回有序查询的函数:

public IQueryable<SomeType> GetOrderedQuery() 
{ 
   var query = from item in db.itemsTable
               where item.x != null 
               orderby item.y, item.z
               select item;
   return query;
}


我们还有另一个函数需要使用相同的查询,但需要使它无序:

public IQueryable<SomeType> GetUnorderedQuery() 
{ 
   var query = GetOrderedQuery();
   query.RemoveOrders(); // How to implement a RemoveOrders function?
   return query;
}


RemoveOrders函数如何实现? (是否作为扩展方法都没有关系)

最佳答案

如果您不希望订购它;不要订购。没有可靠的方法来回溯IQueryable<T>以获得较早的状态,更不用说从中间删除单个位了。我怀疑您想要两个查询:

public IQueryable<SomeType> GetUnorderedQuery()
    => db.itemsTable.Where(item => item.x != null);

public IOrderedQueryable<SomeType> GetOrderedQuery()
    => GetUnorderedQuery().OrderBy(item => item.y).ThenBy(item => item.z);

关于c# - 从其orderby子句中清除IQueryable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49383662/

相关文章:

c# - 具有多个where参数的linq to sql查询

c# - 将 out 修饰符的值返回到 C# 中的集合

sql - 帮助 LINQ 加入

c# - 将方法作为参数传递

c# - WebJob 使用多种方法抛出 FunctionIndexingException

java - 如何说服团队使用新技术(LinQ、MVC 等)?

C# 索引器和 Linq

c# - Dapper 是否支持枚举?

c# - 如何对具有相同属性名称的多个属性使用 select 方法

c# - 通过 WCF 服务 c# 使用存储过程(具有连接)填充 DataGridView