写一个通用的多条件查询方法(带分页的)?该如何处理
写一个通用的多条件查询方法(带分页的)?
要求如下1 要求通用,多条件动态查询,不能拼接SQL(用+ 神马的),或者
2 要求所有的都必须参数化,如:
3 带分页的,分页是SQL实现,不用存储过程,如:
目前没有好的思路,大家给给意见
------解决方案--------------------
坐等高手..
------解决方案--------------------
1.where 1=1,后面的必须补上sql语句
2.参数写到@里面
3.用sqlserver2012,的off偏移语句,易于理解,效率也高
------解决方案--------------------
OFFSET 然后提取命令
------解决方案--------------------
做看高手回答
------解决方案--------------------
------解决方案--------------------
要求如下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));
}
var conList = query.AsEnumerable().Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList<UserInfo>();
return conList;
}
catch (Exception e)
{
return null;
}
}
------解决方案--------------------
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_PageQuery]
@pageSize int=20,
@SortFile varchar(50)='',
@SortType varchar(20)='asc',
@QuerySQL varchar(8000),
@PageIndex int=1,
@Total int output
AS
BEGIN
declare @SQL nvarchar(4000),@SQLTotal nvarchar(4000)
set @SQLTotal='select @Total=count(*) from ('+@QuerySQL +') as totaltable'
exec sp_executesql @SQLTotal,N'@Total int OUTPUT',@Total OUTPUT
set @SQL='SELECT TOP '+CAST(@pageSize as varchar)+' * '
+'FROM '
+'( '
+' SELECT ROW_NUMBER() OVER ('