最后用linq和整数与零排序

时间:2012-03-06 14:35:29

标签: c# linq linq-to-entities

我正在尝试订购我的列表卡但是将零推到最后。我在这里阅读了一些回复并尝试了解决方案,但它似乎没有用。

请参阅下面的我的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 个答案:

答案 0 :(得分:1)

试试这个

List<PackCard> packCards = db.PackCardEntities
  .OrderBy(pc => pc.PackNumber)
  .ThenBy(pc => pc.PickPosition.HasValue? pc.PickPosition : int.MaxValue)
  .ToList().ToPackCards();

答案 1 :(得分:1)

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