Порядок с linq и целыми числами с нулями в конце - PullRequest
0 голосов
/ 06 марта 2012

Я пытаюсь заказать свои списки, но нули до конца. Я прочитал несколько ответов на этот вопрос здесь и попробовал решение, но, похоже, оно не работает.

Пожалуйста, смотрите мой linq запрос ниже. (ToPackCards - это просто расширение для сопоставления с моим пользовательским объектом)

List<PackCard> packCards = db
  .PackCardEntities
  .OrderBy(pc => pc.PackNumber)
  .ThenBy(pc => pc.PickPosition == 0)
  .ThenBy(pc => pc.PickPosition)
  .ToList()
  .ToPackCards();

Мои данные выглядят так

Id | PackNumber | PickPosition | CardID

1|1|null|100 
2|1|null|120  
3|1|1|134  
4|1|2|232  
5|1|null|456

Я хочу, чтобы это было отсортировано так

3|1|1|134
4|1|2|232
1|1|null|100
2|1|null|120
5|1|null|456

Что я получаю, это

1|1|null|100
2|1|null|120
5|1|null|456
3|1|1|134
4|1|2|232

Дайте мне знать, если я что-то напутал, спасибо!

Ответы [ 2 ]

1 голос
/ 06 марта 2012
List<PackCard> packCards = db 
  .PackCardEntities 
  .OrderBy(pc => pc.PackNumber) 
  .ThenBy(pc => pc.PickPosition == null) 
  .ThenBy(pc => pc.PickPosition) 
  .ToList() 
  .ToPackCards(); 
1 голос
/ 06 марта 2012

Попробуйте это

List<PackCard> packCards = db.PackCardEntities
  .OrderBy(pc => pc.PackNumber)
  .ThenBy(pc => pc.PickPosition.HasValue? pc.PickPosition : int.MaxValue)
  .ToList().ToPackCards();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...