在操作数据库时,我们需要注意一点,就是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. javascript之BOM对象(一window对象)

    javascript包含三个部分,ECMAScript,BOM和DOM.ECMAScript是javascript的核心,包含javascript的基础语法.在Web中使用javascript,BOM ...

  2. 将qemu使用的设备树dump出来

    像下面的qemu启动命令: sudo qemu-system-aarch64 \ -M virt \ -cpu cortex-a53 \ -smp \ -m 4096M \ -kernel ./lin ...

  3. php访问者模式(visitor design)

    终于搞定,累成一滩,今晚不想说话. <?php /* The visitor design pattern is a way of separating an algorithm from an ...

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

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

  5. luoguP4197:Peaks(Kruskal重构树+主席树)或者(点分树+离线)

    题意:有N座山,M条道路.山有山高,路有困难值(即点权和边权).现在Q次询问,每次给出(v,p),让求从v出发,只能结果边权<=p的边,问能够到达的山中,第K高的高度(从大到小排序). 思路:显 ...

  6. 微信公众平台iPhone版内测开始了

    5月9日晚些时候自媒体人收到了微信公众平台iPhone版的内测邀请,微信公众平台iPhone版可在手机上写图文,快速查看并回复粉丝消息.留言和赞赏,新建群发.查看群发历史和今日数据,这些功能很实用了, ...

  7. hdu1873-看病要排队-(结构体优先队列)

    http://acm.hdu.edu.cn/showproblem.php?pid=1873 #include<stdio.h> #include<iostream> #inc ...

  8. [codevs3044]矩形面积求并

    题目描述 Description 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入描述 Input Description 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行 ...

  9. LeetCode 568. Maximum Vacation Days

    原题链接在这里:https://leetcode.com/problems/maximum-vacation-days/ 题目: LeetCode wants to give one of its b ...

  10. 【转】30种MySQL索引优化的方法

    第一方面:30种mysql优化sql语句查询的方法       1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by涉及的列上建立索引. 2.应尽量避免在 where ...