在操作数据库时,我们需要注意一点,就是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. MySQL Execution Plan--合理利用隐式的业务逻辑

    问题描述 优化过程中遇到一个SQL: SELECT SUM(user_value) FROM user_log ; 其执行计划为: . row *************************** ...

  2. VirtualBox打开VMware虚拟机

    下载安装VirtualBox 打开VirtualBox,选择新建 设置如下: 之后就可以直接打开虚拟机了.

  3. MySQL权限管理、配置文件(三)

    一.MySQL权限管理 GRANT 权限 ON 授权范围 TO '用户名'@'允许的ip(所有%)' IDENTIFIED BY '用户密码'; 权限:参加下表,一般常用的是CREATE.DELETE ...

  4. 彻底理解webgl

    javascript很简单,核心点就一个: 一切皆对象. 简单又熟悉.呵呵 这么简单的一句话,理解后,你就掌握了js. 一切皆对象,函数也是对象,创建静态方法 fun.action, 创建实例:new ...

  5. XGBoost使用教程(与sklearn一起使用)二

    一.导入必要的工具包# 运行 xgboost安装包中的示例程序from xgboost import XGBClassifier # 加载LibSVM格式数据模块from sklearn.datase ...

  6. 在istio中让prometheus跑起来

    使用microk8s安装,默认的prometheus已就位. 可直接弄. 一,映射本地端口(注意,命令行最后的两个端口,前一个为要映射的本地端口,后一个为POD的服务端口,如果本地相同端口被占用,则要 ...

  7. json串加解密

    1.openssl 本身ssl加解密 2.自定义加解密字符串

  8. android 发布时去除Log

    1) project.properties文件里,去掉下面一行的注释: # To enable ProGuard to shrink and obfuscate your code, uncommen ...

  9. phpcms邮箱smtp配置163企业邮测试可用

    前面我们给phpcms加了https,但是修改邮箱smtp配置一直提交不了,提示请填写接口地址,格式为:http://www.abc.com,结尾不包含"/",找了一下phpsso ...

  10. 用ant.design的设计注意点---表单

    设计的时候,输入表单项 最好放在一起,不要散落在页面各处,会导致表单项穿插存储数据,穿插验证表单,表单的样式设计要严格按照ant的版来,因为表单是交互最多最容易出错的地方,否则浪费太多工作量 持续集成 ...