解决sql语法中in的内容大于1000时需要拆分字符串的情形
#region 解决sql语法中in的内容大于1000时需要拆分字符串的情形
/// <summary>
/// 用于解决sql语法中in的内容大于1000时需要拆分字符串的情形
/// </summary>
/// <param name="codeSet">字符串集合</param>
/// <returns>拆分后的集合</returns>
protected List<List<string>> GetSplitedSet(List<string> codeSet)
{
List<List<string>> splittedCodeList = new List<List<string>>();
while (codeSet.Count > 1000)
{
splittedCodeList.Add(codeSet.Take(1000).ToList());
codeSet.RemoveRange(0, 1000);
}
if (codeSet.Count > 0)
{
splittedCodeList.Add(codeSet);
}
return splittedCodeList;
}
/// <summary>
/// 根据字符串集合和字段名生成拆分后的sql条件字符串
/// </summary>
/// <param name="splittedCodeList">字符串集合</param>
/// <param name="fieldName">字段名</param>
/// <returns>sql条件字符串</returns>
protected string GetSplitedStr(List<List<string>> splittedCodeList, string fieldName)
{
StringBuilder stringBuilder = new StringBuilder();
foreach (var list in splittedCodeList)
{
if (stringBuilder.Length > 0)
{
stringBuilder.Append(" or ");
}
stringBuilder.Append(fieldName + " in ('" + string.Join("','", list.ToArray()).TrimEnd(new char[] { '\'', ',' }) +
"')");
}
return stringBuilder.ToString();
}
/// <summary>
/// 根据数值集合和字段名生成拆分后的sql条件字符串
/// </summary>
/// <param name="splittedidList">数值集合</param>
/// <param name="fieldName">字段名</param>
/// <returns>条件字符串</returns>
protected string GetSplitedStr(List<List<int>> splittedidList, string fieldName)
{
StringBuilder stringBuilder = new StringBuilder();
foreach (var list in splittedidList)
{
if (stringBuilder.Length > 0)
{
stringBuilder.Append(" or ");
}
stringBuilder.Append(fieldName + " in (" + GetSqlAddition(list) +
")");
}
return stringBuilder.ToString();
}
/// <summary>
/// 获取连接后的字符串
/// </summary>
/// <param name="values">数值集合</param>
/// <returns>数值连接字符串</returns>
protected string GetSqlAddition(List<int> values)
{
StringBuilder sqlAddition = new StringBuilder();
foreach (var item in values)
{
sqlAddition.Append(item);
sqlAddition.Append(",");
}
return sqlAddition.ToString().TrimEnd(',');
}
/// <summary>
/// 用于解决sql语法中in的内容大于1000时需要拆分字符串的情形
/// </summary>
/// <param name="idSet">数值集合</param>
/// <returns>拆分后的集合</returns>
protected List<List<int>> GetSplitedSet(List<int> idSet)
{
List<List<int>> splittedidList = new List<List<int>>();
while (idSet.Count > 1000)
{
splittedidList.Add(idSet.Take(1000).ToList());
idSet.RemoveRange(0, 1000);
}
if (idSet.Count > 0)
{
splittedidList.Add(idSet);
}
return splittedidList;
}
#endregion
}
浙公网安备 33010602011771号