订购LinQ c#

时间:2016-11-10 16:32:30

标签: c# linq

我试图通过显示今天第一天的日期值和倒计时来命令我的LINQ,但是在我的实际LINQ中,值没有排列,它们有时按天排序,有时按月排序,但从来没有从今天的日期开始

这是我的LINQ:

foreach (var item in db.VENTA_PLATILLOS.Select(l => l.Fecha)
         .Distinct().OrderByDescending(x => x.Month == result.Month && x.Day == result.Day))
{
    dateday = item.ToString("yyyy-MM-dd");
    var listItem = new SelectListItem { Value = dateday, Text = dateday };
    listItem.Selected = result.Day == item.Day;
    listdate.Add(listItem);
}

我如何先按实际日期正确订购?

EDIT ********

值来自日期时间模型变量我将添加一些日期示例:

2016-11-06 00:00:00.000
2016-11-05 00:00:00.000
2016-11-04 00:00:00.000
2016-11-03 00:00:00.000
2016-11-02 00:00:00.000
2016-10-31 00:00:00.000
2016-10-29 00:00:00.000
像这样

编辑2 *****

GOT现在固定 在按模型进行一些更改

之后,按月排序然后按日排序

2 个答案:

答案 0 :(得分:6)

        .OrderByDescending(x => x.Month)
        .ThenByDescending(x => x.Day)

LINQ提供ThenByDescending,允许您在初始订单后订购。

但你应该能够做到这一点

.OrderByDescending(x => x),因为您已经在日期时间内进行迭代。

答案 1 :(得分:0)

难道您只需要通过x来订购Stackoverflower已经注明了吗? l.Fecha似乎是一个DateTime:

var items = from item in db.VENTA_PLATILLOS.Select(l => l.Fecha)
     .Distinct()
     .OrderByDescending(x => x)
    let dateday = item.ToString("yyyy-MM-dd")
    select new SelectListItem {Value = dateday, Text = dateday, Selected = result.Day == item.Day};
listdate.AddRange(items);