在操作数据库时,我们需要注意一点,就是in查询的参数不能超过1000个,否则会报错,所以我们在进行in查询的时候需要对参数数量进行控制:

用于分解数组的扩展方法:

 /// <summary>
/// 根据数量对数组进行分组(in查询不能超过1000个条目)
/// </summary>
/// <param name="list"></param>
/// <param name="size">数量</param>
private List<List<long>> GroupListBySize(List<long> list,int size)
{
List<List<long>> listArr = new List<List<long>>();
int arrSize = list.Count() % size == ? list.Count() / size : list.Count() / size + ;
for (int i = ; i < arrSize; i++)
{
List<long> sub = new List<long>();
for (int j = i * size; j <= size * (i + ) - ; j++)
{
if (j <= list.Count() - )
{
sub.Add(list[j]);
}
}
listArr.Add(sub);
}
return listArr;
}

如:数组长度为2500,size(按照多少数量进行分割),这里我们传1000,则会被分解为三个数组,长度分别为,1000,1000,500;

业务层的方法接口:

        /// <summary>
/// 根据id批量修改状态
/// </summary>
/// <returns></returns>
public bool ButchChangeState(List<long> ids, int state)
{
if (ids.Count > )
{
if (ids.Count()>)
{
var lists = GroupListBySize(ids,);
foreach (var list in lists)
{
dal.ButchChangeState(list,state);
}
}
else
{
dal.ButchChangeState(ids, state);
}
return true;
}
else { return false; }
}

数据库交互:

     /// <summary>
/// 修改状态////0:已执行,1:执行中,2:执行失败,3:待下发
/// </summary>
/// <param name="ids"></param>
/// <param name="state"></param>
/// <returns></returns>
public bool ButchChangeState(List<long> ids, int state)
{ if (ids.Count > )
{
string idStr = string.Join(",", ids);
//List数组的每个元素加上引号,如("12","32","5456","876455")
string idString = string.Format("'{0}'", idStr.Replace(",", "','"));
string sql = $" update COMMAND_ACCESSLOG set WORKSTATE = {state},STRING1=:DOWNSENDTIME where COMMANDID in ( {idString} )";
OracleParameter[] parameters =
{
new OracleParameter(":DOWNSENDTIME",OracleDbType.Varchar2,)
};
parameters[].Value = DateTime.Now.ToString();
var row = DbHelperOra.ExecuteSql(sql,parameters);
return row > ? true : false;
}
else { return false; } }

c#按指定长度分解数组的更多相关文章

  1. c++ 在指定长度的数组或者容器中,统计元素出现的次数(count)

    #include <iostream> // cout #include <algorithm> // count #include <vector> // vec ...

  2. Java-生成指定长度验证码的一种简单思路

     前言:以前做过的一个项目,刚开的时候始验证码是在前端生成前端验证的,后来觉得不靠谱,另外就是找回密码的功能也需要发送邮件和短信的验证码,所以,验证码就必须在后端生成并且保存到应用会话中才行了!所以, ...

  3. C#利用substring按指定长度分割字符串

    这几天学习分析声音的波形数据,接收到的是十六进制的数据,需要将数据转换成十进制再绘图,这个过程涉及到字符串的分割,正好可以促进自己对C#相关知识的学习.说到分割字符串,我首先想到的是Split,但根据 ...

  4. C#按指定长度分割字符串

    C#按指定长度分割字符串   这几天学习分析声音的波形数据,接收到的是十六进制的数据,需要将数据转换成十进制再绘图,这个过程涉及到字符串的分割,正好可以促进自己对C#相关知识的学习.说到分割字符串,我 ...

  5. 随机生成指定长度字符字符串(C语言实现)

    相关函数 srand(), rand()头文件#include<stdlib.h> 定义函数 int rand(void) 函数说明 rand()会返回一随机数值,范围在0至RAND_MA ...

  6. 小记:目标数组的长度不够。请检查 destIndex 和长度以及数组的下限。

    异常:System.ArgumentException: 目标数组的长度不够.请检查 destIndex 和长度以及数组的下限.(不好意思忘记截图了) 发生异常的代码如下: var list = ne ...

  7. js指定分隔符连接数组元素join()

    指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. 语法: arrayObject.join(分隔符) 参数说明: 注意:返回 ...

  8. .NET截取指定长度汉字超出部分以"..."代替

    /// <summary> /// 将指定字符串按指定长度进行剪切, /// </summary> /// <param name= "oldStr " ...

  9. php随机生成指定长度的字符串 可以固定数字 字母 混合

    php 生成随机字符串 可以指定是纯数字 还是纯字母 或者混合的. 可以指定长度的. function rand_zifu($what,$number){ $string=''; for($i = 1 ...

随机推荐

  1. 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题

    springboot集成腾讯云短信服务: (1)导入依赖 <dependency> <groupId>org.springframework.boot</groupId& ...

  2. Nginx服务加到systemctl

    当我们编译安装nginx服务后,可以用手执行启动脚本也可以作为服务的形式运行. 添加启动文件:vim /usr/lib/systemd/system/nginx.service [Unit] Desc ...

  3. 《Linux就该这么学》课程完结,强烈推荐

    本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...

  4. 为 Jupyter 添加目录

    1.依次在 anaconda prompt 窗口中执行以下两句命令 pip install jupyter_contrib_nbextensions # 安装第三方包 jupyter contrib ...

  5. Jupyter Notebook 更换主题(背景、字体)

    通过命令行窗口或 Anaconda Prompt 窗口 1.安装 Jupyter 主题 pip install jupyterthemes 2.更新 Jupyter 主题 (可选) pip insta ...

  6. 使用async进行结构化并发程序开发

    异步风格的函数: 继续来学习async相关的东东,对于它其实可以用到函数上,也就是用它可以定义一个异步风格的函数,然后在该函数中再来调用普通的函数,下面来瞅一下: 其实“GlobalScope.asy ...

  7. Wpf DataGrid动态添加列,行数据(一)

    由于最近有这方面的需求,而且刚接触wpf不久,在网上找了很多方法,都不是使用MVVM模式的,因为DataGrid的列不能绑定 这就难受了,我想了个折中的方法,这个是使用了MVVMLight的消息机制, ...

  8. linux/ubuntu 取色工具gpick

    命令行方式安装: sudo apt-get install gpick 安装完成以后,在终端窗口中输入: gpick 即可以启动工具

  9. 有关OutputDebugString的一点儿事实

    我最近花了一些时间分析OutputDebugString方法.在我的另一个实验中,我需要一个仅依赖于本机API的OutputDebugString版本.在实现它的过程中,我发现了一些关于OutputD ...

  10. PATA1031 Hello World for U

    参考代码: #include <cstdio> #include <cstring> int main() { char str[100], ans[40][40]; scan ...