我有一个要求,我在bytearray中有大量数据。我想选择39998数据并跳过39999,40000.40001,40002索引,然后再次选择此39998数据并跳过39999,40000.40001,40002。
所以我的要求就是这样 我需要大小为39998 * 12 = 479976
的总字节数组我试过这个解决方案
for (int i = 1; i < 13; i++)
{
list.RemoveAt(39999 * i);
list.RemoveAt((39999 * i) + 1);
list.RemoveAt((39999 * i) + 2);
list.RemoveAt((39999 * i) + 3);
}
但它改变了名单。
我需要选择1到39998跳过4字节的数据,然后选择39998并跳过4字节,依此类推12次。然后重新组合bytearray。实际上如果我们正在使用列表它转移索引所以在第二次它发生问题(删除其他索引)。所以,如果您有其他建议,请告诉我
答案 0 :(得分:0)
这有用吗?
app.onFirebaseLogin = function(event) {
this.ref = new Firebase(this.firebaseURL + '/user/' +
event.detail.user.uid);
var self = this;
this.ref.on('value', function(snapshot) {
self.updateArticole(snapshot);
});
};
答案 1 :(得分:0)
如果我正确理解这个问题就会有这样的工作吗?
int iterations = 12;
var newList = new List<byte>();
for(int i = 0; i < iterations; i++)
{
newList.AddRange(list.Skip(40002 * i).Take(39998));
}
var result = newList.ToArray();
答案 2 :(得分:0)
如下:
int take = 39998;
int skip = 4;
int iterationBatch = take + skip;
int finalAmount = take * 12;
var yourNewArray = yourOldArray
.GroupBatch(iterationBatch)
.SelectMany(x => x.Take(take))
.Take(finalAmount)
.ToArray();
使用类似的扩展方法:
public static IEnumerable<IEnumerable<T>> GroupBatch<T>(this IEnumerable<T> enumerable, int batchSize)
{
int count = enumerable.Count();
for (int taken = 0; taken < count ; taken += batchSize)
{
yield return enumerable.Skip(taken).Take(batchSize);
}
}
我虽然没有彻底测试过,但你对它有了一般的了解......