如何划分数组列表并制作切片并传入Web服务?

时间:2012-01-05 07:31:22

标签: c# asp.net wcf

我有ids的arraylist包含1000条记录,这将作为参数传递给WCF服务,我得到1000条记录的响应。现在我的要求是将1000分成10个块并将服务调用10次。我怎样才能在c#asp.net客户端中执行此操作?

示例:假设我有150个ID要传递,在这种情况下,一个函数调用中有100个ID,第二个调用中应该有50个。像这样,如果我有270个ID,那么将创建100个,100个和70个三个块,并为服务进行三次调用。

我现在正在使用的代码粘贴在下面,在此代码中,我一次传递所有ID

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[]);

由于

2 个答案:

答案 0 :(得分: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 :(得分:1)

我同意Darren Young的观点;使用键入的列表。此外,使用Linq。寻找灵感:看看:Split List into Sublists with LINQ