从orderby子句中清除IQueryable

时间:2018-03-20 12:00:36

标签: 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功能? (作为扩展方法是否无关紧要)

1 个答案:

答案 0 :(得分:8)

如果您不想订购;不要订购它。没有可靠的方法可以通过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);