C#のは、指定された配列の長さを爆発しました

操作データベースでは、パラメータの数を制御するために必要な場合に、クエリ内のパラメータは、それ以外の場合はエラーになり、1000以上のことはできませんので、我々は、クエリで作っているという点に注意を払う必要があります:

配列を分解するための拡張メソッド:

 ///  <まとめ> 
        /// アレイの数がグループ化される(クエリ1000個のエントリを超えることはできません)
         ///  </要約> 
        ///  <PARAM NAME = "リスト"> </ PARAM> 
        ///  < paramの名前= "サイズ"> 番号</ param>の
        プライベートリスト<リスト< ロング >> GroupListBySize(一覧< ロング >一覧、int型のサイズ)
        { 
            リスト <リスト< ロング >> listArr = 新しい新しいリスト<リスト< ロング >> ( );
             INT arrSize = list.Count()%のサイズ== 0 list.Count()/サイズ:リスト?。)(カウント/サイズ+ 1 以下のためにint型 i = 0 ; iは<arrSize iは++ 
            { 
                リスト < 長い >サブ= 新しいリスト< ロング > ();
                以下のためにint型 J =サイズを*; J <=大きさ*(I + 1) - 1 ; J ++ 
                { 
                    場合(j <= list.Count() - 1 
                    { 
                        sub.Add(リスト[J])。
                    } 
                } 
                listArr.Add(サブ)。
            }
            返すlistArrを。
        }  

例えば:配列の長さは2500サイズ我々は1000渡し、3つの配列、長さに分解される(数に応じて分割数)であり、それぞれ、1000,1000,500。

 

サービス層インタフェースのメソッド:

        ///  <要約> 
        /// 根据ID批量修改状态
         ///  </要約> 
        ///  <戻る> </戻り> 
        パブリック ブール ButchChangeState(<リスト長い > IDS、INTの状態)
        { 
            場合(ids.Count > 0 
            { 
                場合(ids.Count()> 1000年
                { 
                    VARのリスト= GroupListBySize(IDS、1000年)。
                    foreachのVARのリストリスト)
                    {
                        dal.ButchChangeState(リスト、状態)。
                    } 
                } 
                
                { 
                    dal.ButchChangeState(IDS、状態)。
                } 
                を返す 
            } 
             { 戻り } 
        }

 

データベースの相互作用:

     ///  <まとめ> 
        /// 変性状態/// / 0:実行、1:実行、2:実行は失敗し、3:発行する
         ///  </要約> 
        ///  <PARAM NAME = " IDS "> </ param>の
        ///  <PARAM NAME ="国家「> </ param>の
        ///  <戻り値> </戻り値> 
        公共 BOOL ButchChangeState(一覧< ロング > IDS、int型の状態)
        { 

            IF(IDS。 COUNT> 0 
            { 
                文字 idStr = 文字列 .join(" " 、IDS);
                 // このような( "12"として配列リスト引用符の各要素のために、「32" 、 "5456"、 "876455") の文字列
                idString = ストリング .Format(" '{0}' "、idStr.Replace(" "" '' " ));
                文字列のSQL = $ " 更新COMMAND_ACCESSLOGはWORKSTATE = {状態}を設定し、STRING1 =は:DOWNSENDTIME({idString})内のcommandId " 
                OracleParameterの[]パラメータ = 
                { 新規のOracleParameter(" :DOWNSENDTIME "、OracleDbType.Varchar2、1024 
                }。
                    DateTime.Now.ToString();
                VaRの行= DbHelperOra.ExecuteSql(SQL、パラメータ)。
                リターン行> 0; 
            } 
             { 戻り } 

        }

 

おすすめ

転載: www.cnblogs.com/likui-bookHouse/p/11585533.html