如何在IEnumerable中使用Orderby子句

时间:2014-03-18 13:02:34

标签: c# asp.net

我写了以下代码:

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表达式

任何人都指导我如何解决这个问题?

任何帮助都将不胜感激。

谢谢!

3 个答案:

答案 0 :(得分:0)

为什么你使用新的List()??

遵循以下模式

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

steps = steps.OrderBy(step => step.X);

注:

IEnumerable不保证订购,但使用IEnumerable的实现可能会或可能不会保证订购。

例如,如果枚举List,则保证顺序,但如果枚举HashSet,则不提供此类保证,但两者都将使用IEnumerable接口进行枚举

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

答案 1 :(得分:0)

你试过吗

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

这将产生一个IEnumerable的列表。

答案 2 :(得分:0)

我不确定你为什么需要&#34; new&#34;如果你说GetAvailableSlot返回一个IEnumerable。我认为你的代码看起来应该假设GetAvailableSlot返回IEnumerable:

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

您对记录集的所有操作都是对结果进行排序,而不需要声明多个变量。如果这仍然无效,那么我们需要查看更多代码才能看到问题所在...