我该如何将一个 `List` 转换成一个 `byte[]` 数组,或者一个 `Stream` 流?
SelectMany
应该可以解决问题:
var listOfArrays = new List<byte[]>();
byte[] array = listOfArrays
.SelectMany(a => a)
.ToArray();
var myList = new List<byte>();
var myArray = myList.ToArray();
编辑:好的,事实证明问题实际上是关于List<byte[]>
的 - 在这种情况下,您需要使用SelectMany将一个序列的序列展平为单个序列。
var listOfArrays = new List<byte[]>();
var flattenedList = listOfArrays.SelectMany(bytes => bytes);
var byteArray = flattenedList.ToArray();
这里有一篇关于it技术的文档,你可以在这里查看。
List<byte[]>
。 - Peter Lillevold这可能有点粗糙,需要一些优化,但你能理解它的要点。
var buffers = new List<byte[]>();
int totalLength = buffers.Sum<byte[]>( buffer => buffer.Length );
byte[] fullBuffer = new byte[totalLength];
int insertPosition = 0;
foreach( byte[] buffer in buffers )
{
buffer.CopyTo( fullBuffer, insertPosition );
insertPosition += buffer.Length;
}
System.Collections.Generic.List<byte>
,请调用ToArray()。它将返回一个新的byte[]
。