用Nhibernate操作数据库,怎么做复合查询啊,条件比较多,10+,在输入完所有条件后点btn,如何实现复合查询?还有对于空值的textbox如何处理?
望各位不吝赐教!多谢!

解决方案 »

  1.   

    public virtual DataSet Query(CustomerRequestMode mode, string navLetter, string quoteType, string queryProperty, string queryString)
            {
                ICriteria crit = CreateCriteria(typeof(CustomerInfo));            switch (mode)
                {
                    case CustomerRequestMode.Mine:
                        crit.Add(Expression.Eq("Operator", SooGiftPrincipal.LoginUser));
                        break;
                    case CustomerRequestMode.Share:
                        crit.CreateCriteria("ClientShareInfos").Add(Expression.Eq("Share", SooGiftPrincipal.LoginUser));
                        break;
                    case CustomerRequestMode.Juniors:
                        crit.Add(Expression.In("Operator", SooGiftPrincipal.LoginUser.JuniorUserJuniorInfos));
                        break;
                    default:
                        throw new Exception("Parameter mode error!");
                }            if (!string.IsNullOrEmpty(navLetter))
                    crit.Add(Expression.Eq("Initial", navLetter));
                if (!string.IsNullOrEmpty(quoteType))
                    crit.Add(Expression.Eq("QuoteType.Id", quoteType));            if (!string.IsNullOrEmpty(queryProperty) && !string.IsNullOrEmpty(queryString))
                {
                    if (queryProperty.ToLower() == "clientlinkman")
                        crit.CreateCriteria("ClientLinkman").Add(Expression.Like("RealName", "%" + queryString + "%"));
                    else
                        crit.Add(Expression.Like(queryProperty, "%" + queryString + "%"));
                }
                crit.AddOrder(new Order("UsedCount", true));            return crit.List();
            }
      

  2.   

    生成一个hsql where 子句不就行了。