2010-08-09 42 views
0

我有大约1000个数组元素。这些元素由每个元素的1个用户ID组成。数组问题。有关如何解决我的问题的任何想法?

我想要做的就是缩短这个数组,每个元素包含10个用户ID,每个元素的每个用户ID由一个逗号分隔。

当前数组:

324234 
2342234 
0983242 
.... 

新阵列:

324234,2342342,234234234,234234,5436436,457456,456456,234234,234234,546456436 
34234,23423426,54645654,34532423,23423432,4634634,2342342,234234,264353,345345 
.... 

你可能会问为什么这样做?

嗯,我正在发送ID的发布请求。该请求接受1个或更多ID。为了缩短我希望每个请求发送10个ID的请求数量。

关于如何将旧数组分组到新的较短数组的任何想法?

回答

2

那么你为什么不把它们全部作为CSV发送?

后来编辑:

注:代码没有测试

int amountPerCall = 10; 
List<string> ids = new ArrayList<string>(); 
// add ids... 
for (int i = 0 ; i < ids.Count; i += amountPerCall) { 
    Send(String.Join(",", ids, i, amountPerCall)); 
} 
+0

我不因为我发布的服务可能无法预测,所以我想发送它们。我在10岁时很安全,但发送整个1000可能会导致服务器端出现错误。 – 2010-08-09 05:18:10

+0

API可能每个请求的上限为10个ID。 – icktoofay 2010-08-09 05:18:48

+0

请参阅更新 – thelost 2010-08-09 05:24:42

0

你可以使用MoreLINQBatch方法:

IEnumerable<string> batches = input.Batch(10, ids => string.Join(",", ids)); 

如果你不想使用MoreLINQ本身,你可以看看代码来了解它的功能。

(取决于你使用的.NET版本,你可能需要将输入转化为string.Join到一个数组。.NET 4中推出了一些有用的新重载该方法。)

相关问题