日期:2014-05-17  浏览次数:20508 次

写一个通用的多条件查询方法(带分页的)?
要求如下1 要求通用,多条件动态查询,不能拼接SQL(用+ 神马的),或者

 
            StringBuilder strBuild = new StringBuilder(_SelectStatEffect);
            if (orgID != "")
            {
                strBuild.AppendFormat(" and C1.OrgFullCode like '{0}%' {1}", orgID, strFilter);
            }
            else
            {
                strBuild.AppendFormat(" {0}", strFilter);
            }
            strBuild.AppendFormat(" group by ORGFULLCODE,ORGNAME,paytype,DATEEFFECTED,currentstep)");

2 要求所有的都必须参数化,如:

dso.DBDataParameterList["P_YEAR"].Value = int.Parse(strYear);    // 生成年度       
      


3 带分页的,分页是SQL实现,不用存储过程,如:

SELECT k.rn, k.* from (SELECT t.* ,  row_number() over ( order by 。。。。。



目前没有好的思路,大家给给意见

------解决方案--------------------
坐等高手..
------解决方案--------------------
1.where 1=1,后面的必须补上sql语句
2.参数写到@里面
3.用sqlserver2012,的off偏移语句,易于理解,效率也高
------解决方案--------------------
OFFSET 然后提取命令
------解决方案--------------------
做看高手回答
------解决方案--------------------
public IList<UserInfo> GetAllContent(int pageSize, int pageIndex, string logName)
        {
            try
            {
                IQueryable<UserInfo> query = DbContext.UserInfo;
                if (!string.IsNullOrEmpty(logName))
                {
                    query = query.Where(i => i.LoginName.Contains(logName));
                }
           &nbs