2012-01-05 1 views
0

idsのarraylistには1000個のレコードが含まれており、これがパラメータとしてWCFサービスに渡され、1000レコードの応答が返されます。私の必要条件は、1000を10チャンクに分割し、10回コールすることです。どうすればC#asp.netクライアントでこれを行うことができますか?配列リストを分割してスライスを作成し、Webサービスで渡す方法は?

例:渡すべき150のIDがあるとします。この場合、1つの関数呼び出しでは100のID、2番目の呼び出しでは50です。このように、270 idsの場合、100,100、および70の3つのチャンクが作成され、3つのコールがサービスのために作成されます。

私が今使っているコードは、このコードの下とに貼り付けられ、私は時間ATA、私はダレン・ヤングに同意

ArrayList myArrayList = new ArrayList(); 

if (parsedData.Count > 0) 
       { 
        foreach (var item in parsedData) 
        { 
         myArrayList.Add(new Identifier() { Id = item.First() }); 
        } 
       } 

ServiceReference.CustomerProfileServiceClient clientObj = new ServiceReference.CustomerProfileServiceClient(); 

var responseObj = clientObj.GetProfiles(myArrayList.ToArray(typeof(Identifier)) as Identifier[]); 

おかげ

+0

あなたの問題に対する答えは実際にはありませんが、ArrayListは一般的に非推奨となっています。あなたはおそらく強く型付けされたリストでもっと良いでしょう

+0

この質問を再タグ付けし直しましたか? asp.netとwcfはここでは関連性がありません。 – Morten

答えて

1
ArrayList myArrayList = new ArrayList(); 
int iCount = 0; 

if (parsedData.Count > 0) 
       { 
        foreach (var item in parsedData) 
        { 
         myArrayList.Add(new Identifier() { Id = item.First() }); 
         iCount++; 
         if (iCount % 10 == 0) 
         { 
           ServiceReference.CustomerProfileServiceClient clientObj = new ServiceReference.CustomerProfileServiceClient(); 
           var responseObj = clientObj.GetProfiles(myArrayList.ToArray(typeof(Identifier)) as Identifier[]); 
           myArrayList.Clear(); 
         } 
        } 
       } 
1

をすべてのIDを渡しています。型付きリストを使用する。さらに、Linqを使用します。インスピレーションのためにこれを見てください:Split List into Sublists with LINQ

関連する問題