jmyns
jmyns

Reputation: 127

linq order by two criteria

I'm having some trouble getting expected results from a linq query.

Here is some example data:

Queue Priority TTRDate
Main Critical 6/9/2014 7:41:00 PM
Main Major    6/9/2014 7:42:00 PM
Main Critical 6/9/2014 7:43:00 PM
Main Minor    6/9/2014 7:30:00 PM
Main Minor    6/9/2014 7:35:00 PM

Query:

listTickets = queryAllTickets.Where(y => y.Queue == "Main")
  .OrderBy(t => t.Priority == "Critical")
  .ThenBy(x => x.TTRDate)
  .Take(numberOfrecords)
  .ToList();

Expected Results:

Main Critical 6/9/2014 7:41:00 PM
Main Critical 6/9/2014 7:43:00 PM
Main Minor    6/9/2014 7:30:00 PM
Main Minor    6/9/2014 7:35:00 PM
Main Major    6/9/2014 7:42:00 PM

To put it simply, I want Critical items ordered by TTRdate, and then I want everything else ordered by TTRDate.

Upvotes: 0

Views: 479

Answers (1)

MarcinJuraszek
MarcinJuraszek

Reputation: 125620

false compares less than true, so you need OrderByDescending:

.OrderByDescending(t => t.Priority == "Critical")

or use != instead of ==:

.OrderBy(t => t.Priority != "Critical")

Upvotes: 4

Related Questions