2016-11-10 89 views
-2

即时通过显示第一个今天的日期和倒计时的日期值来订购我的LINQ,但在我的实际LINQ中,这些值并没有被安排,它们都有时按天排序,有时按月排序,但从今天开始订购LinQ c#

这是我的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); 
} 

我怎么能按实际日期先正确订购它们?

编辑********

值来自于日期时间型变量i西港岛线加入红枣的一些例子:

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 

这样

EDIT 2 *** **

GOT IT FIXED NOW 按月订购,然后按天对产品进行一些更改后终于开始工作

+6

'x.Month == result.Month && x.Day == result.Day'的计算结果为'true' /'false'。您按布尔值排序,而不是日期。 – Amy

+0

为什么他不能只执行'OrderByDescending(x => x)'?不是'日期时间'吗? – StackOverflower

+0

@StackOverflower,我认为你是对的,他不需要任何技巧,只需OrderByDescending(x => x)。 –

回答

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

LINQ offers ThenByDescending which will allow you order to a initial order。

但是,你应该能够只是这样做

.OrderByDescending(x => x)因为你已经在日期时间迭代。

+0

stil我的第一个值显示为“ 2016-10-10“,然后他们按照月份和日期倒数排序,如”10-10“,”09-09“ :/我该如何解决这个问题? –

+0

我不明白什么是错的。你能否给我一些日期,以及如何通过它们排序来解决问题? – jdmdevdotnet

+0

另外,如果你能告诉我你正在迭代的属性。是月份日年,还是您有日期属性? – jdmdevdotnet

0

难道你只需要按照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);