如何在IEnumerable中使用order子句

本文关键字:order 子句 IEnumerable | 更新日期: 2023-09-27 17:50:50

我写了以下代码:

IEnumerable<Models.bookings> search = new List<bookings>();
search = new available_slotsRepositories().GetAvailableSlot(param1,param2);       
var data = from s in search.AsEnumerable().
           OrderByDescending(c => c.BookingDate)
           select s;

我也试过这个,它不工作:

search.OrderByDescending(c => c.BookingDate);

第三行给出了以下错误:表达式不能包含lambda表达式

有谁能指导我如何解决这个问题吗?

如有任何帮助,不胜感激。

谢谢!

如何在IEnumerable中使用order子句

为什么使用new List()??

遵循下面的模式

IEnumerable<Step> steps = allsteps.Where(step => step.X <= Y);
steps = steps.OrderBy(step => step.X);

注意:

IEnumerable不保证排序,但是使用IEnumerable的实现可能保证排序,也可能不保证排序。

例如,如果枚举List,顺序是有保证的,但如果枚举HashSet,则不提供这样的保证,但两者都将使用IEnumerable接口枚举

也许你正在寻找IOrderedEnumerable接口?它由OrderBy()等扩展方法返回,并允许使用ThenBy()进行后续排序。

你试过了吗

var data = (from s in search
       OrderByDescending(c => c.BookingDate)
       select s).ToList();

这将创建一个IEnumerable列表

我不知道为什么你需要"新的",如果你说GetAvailableSlot返回一个IEnumerable。我认为你的代码应该看起来像假设GetAvailableSlot返回IEnumerable是这样的:

var data = available_slotsRepositories().GetAvailableSlot(param1,param2).ToList().OrderByDescending(c => c.BookingDate);

你对记录集所做的就是排序结果,没有必要声明多个变量。如果这仍然不起作用,那么我们需要看到更多的代码,以了解问题是什么…