2010-05-10 27 views
1
ICriteria crit = session.CreateCriteria<HCOSpendTable>(); 

foreach (ICriteriaItem<object> param in filters) 
{ 
    crit.Add(Expression.Eq(param.PropertyName, param.FilterValue)); 
} 

crit.SetProjection(Projections.Distinct(Projections.ProjectionList())); 

Disctinct不工作,你可以請幫我Disctinct

crit.AddOrder(new Order(sortField, sortOrderAscending)); 
crit.SetFirstResult(pageNumber * pageSize); 
crit.SetMaxResults(pageSize); 

transaction.Commit(); 

return crit.List<IHCOSpendTable>(); 

回答

0

的ICriteria標準= session.CreateCriteria(typeof運算(人)); (Projections.Alias(Projections.Property(「LastName」)).ProProjection(Projections.Distinct(Projections.ProjectionList().Add(Projections.Alias(Projections.Property(「FirstName」),「FirstName」)).Add 「姓」))));

criteria.SetResultTransformer(新NHibernate.Transform.AliasToBeanResultTransformer(typeof運算(人)));

IList people = criteria.List();

1

您需要將屬性映射添加到ProjectionList()

crit.SetProjection(Projections.Distinct(Projections.ProjectionList() 
    .Add(Projections.Property("id"), "id") 
    .Add(Projections.Property("name"), "name") 
)); 
+0

當我這樣做,我收到異常 無法執行查找[SQL:SQL不可用] – bharat 2010-05-10 21:05:12

+0

它沒有分頁工作嗎?什麼是生成的SQL? – dotjoe 2010-05-10 22:35:25

+0

是的,它的工作後,我做了小的改變如何添加「排序字段」的位置條件!=空或空 – bharat 2010-05-11 16:02:59