2012-11-14 26 views
1

我想排序十進制或整數列。但是排序上升零到最後。在nhibernate排序整數或小數列

代碼:

criteria.AddOrder(Order.Asc(Projections.Cast(NHibernateUtil.Decimal, Projections.Property("cloumn1"))))); 

輸出:

35342860 
36870852 
87654321 
213123213 
0 
0 

在代碼中的任何問題?或者什麼是解決方案?

回答

0

這些很可能是空值。您可以查看使用條件限制或使其成爲默認值爲0的非空值列,這似乎是您所追求的內容。

條件限制將是這樣的

.AddOrder 
    (
     Order.Asc 
     (
      Projections.Conditional 
      (
       Restrictions.IsNull("cloumn1"), 
       Projections.Constant(1), 
       Projections.Constant(0) 
      ) 
     ) 
    ) 

,如果你把它作爲第一個排序將使零點在頂部,顯示爲0

+0

我明白空不考慮而排序。所以只有空字段總是顯示最後。對於colum1我有流利的nhibernate映射。我改變了column1的數據類型int => int?,decimal => decimal?在映射課上。這說得通。謝謝。 –