C# 合并多字节数组#
我想合并多个字节数组,但失败。最后一个数组仅显示最后添加的字节数组,而不是所有字节数组。以下是我的尝试C# 合并多字节数组#,c#,arrays,array-merge,C#,Arrays,Array Merge,我想合并多个字节数组,但失败。最后一个数组仅显示最后添加的字节数组,而不是所有字节数组。以下是我的尝试 List<byte[]> d = new List<byte[]>(); foreach (var item in IDs) { obj = RequisitionsObj.GenerateLabOrderReq(); if (obj.Data != null) { d.Add(obj.Data);
List<byte[]> d = new List<byte[]>();
foreach (var item in IDs)
{
obj = RequisitionsObj.GenerateLabOrderReq();
if (obj.Data != null)
{
d.Add(obj.Data);
}
}
byte[] final = Combine(d.SelectMany(a => a).ToArray());
private byte[] Combine(params byte[][] arrays)
{
byte[] rv = new byte[arrays.Sum(a => a.Length)];
int offset = 0;
foreach (byte[] array in arrays)
{
System.Buffer.BlockCopy(array, 0, rv, offset, array.Length);
offset += array.Length;
}
return rv;
}
List d=新列表();
foreach(ID中的变量项)
{
obj=RequisitionsObj.GenerateLabOrderReq();
如果(对象数据!=null)
{
d、 添加(对象数据);
}
}
byte[]final=Combine(d.SelectMany(a=>a.ToArray());
专用字节[]组合(参数字节[][]数组)
{
byte[]rv=新字节[arrays.Sum(a=>a.Length)];
整数偏移=0;
foreach(数组中的字节[]数组)
{
系统缓冲区块拷贝(数组,0,rv,偏移量,数组长度);
偏移量+=数组长度;
}
返回rv;
}
您不需要使用合并方法。只需使用选择多个
:
List<byte[]> d = new List<byte[]>();
foreach (var item in IDs)
{
obj = RequisitionsObj.GenerateLabOrderReq();
if (obj.Data != null)
{
d.Add(obj.Data);
}
}
byte[] final = d.SelectMany(a => a).ToArray();
List d=新列表();
foreach(ID中的变量项)
{
obj=RequisitionsObj.GenerateLabOrderReq();
如果(对象数据!=null)
{
d、 添加(对象数据);
}
}
字节[]final=d.SelectMany(a=>a).ToArray();
编辑
工作样本:
List<byte[]> d = new List<byte[]>();
byte[] b1 = new byte[] { 1, 2, 3, 4 };
byte[] b2 = new byte[] { 5, 6, 7, 8 };
d.Add(b1);
d.Add(b2);
byte[] b3 = d.SelectMany(a => a).ToArray(); // Content is 1,2,3,4,5,6,7,8
List d=新列表();
字节[]b1=新字节[]{1,2,3,4};
字节[]b2=新字节[]{5,6,7,8};
d、 添加(b1);
d、 添加(b2);
字节[]b3=d.SelectMany(a=>a).ToArray();//含量为1,2,3,4,5,6,7,8
我刚刚用一个示例进行了尝试(请参见我的编辑),结果一切正常。您的代码中一定发生了其他事情