views:

112

answers:

1
.OrderBy(y => y.Year).ThenBy(m => m.Month);

How to set descending order?

EDIT:

I tried this:

var result = (from dn in db.DealNotes
                         where dn.DealID == dealID                         
                         group dn by new { month = dn.Date.Month, year = dn.Date.Year } into date
                         orderby date.Key.year descending
                         orderby date.Key.month descending
                         select new DealNoteDateListView { 
                             DisplayDate = date.Key.month + "-" + date.Key.year,
                             Month = date.Key.month,
                             Year = date.Key.year,
                             Count = date.Count()
                         })
                         //.OrderBy(y => y.Year).ThenBy(m => m.Month)
                         ;

And it seems working. Is it wrong to use orderby twice like I used it here?

+1  A: 

You can get the descending ordering by using a different pair of methods:

items.OrderByDescending(y => y.Year).ThenByDescending(m => m.Month); 

Using LINQ query, you can write:

from date in db.Dates
orderby date.Key.year descending, date.Key.month descending 
select new { ... } 

The trick is that you need only one orderby clause - if you add multiple of these, the list will be re-sorted each time. To sort elements that have the first key equal using another key, you need to separate them using , (orderby is translated to OrderBy or OrderByDescending while , is translated to ThenBy or ThenByDescending).

Tomas Petricek
great, thanks :) I edited my question, could you please take a look
ile