将List 转换为一个byte 数组
如何在一个byte[]
数组或一个Stream
转换List
?
SelectMany
应该做的诀窍:
var listOfArrays = new List(); byte[] array = listOfArrays .SelectMany(a => a) .ToArray();
var myList = new List(); var myArray = myList.ToArray();
编辑:好的,事实certificate问题实际上是关于List
– 在这种情况下,您需要使用SelectMany将序列序列展平为单个序列。
var listOfArrays = new List(); var flattenedList = listOfArrays.SelectMany(bytes => bytes); var byteArray = flattenedList.ToArray();
文档来自http://msdn.microsoft.com/en-us/library/system.linq.enumerable.selectmany.aspx
您可以使用List
这可能有点草率,可以使用一些优化,但你得到它的要点
var buffers = new List(); int totalLength = buffers.Sum( 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
,请调用ToArray()。 它返回一个新的byte[]
。