Ilist<;溪流>;到字节[]c#

Ilist<;溪流>;到字节[]c#,c#,C#,如何将Ilist转换为字节[]?我尝试了下面的代码,但得到了空值 byte[] buffer = new byte[16*1024]; using (MemoryStream ms = new MemoryStream()) { int read; while ((read = m_streams[0].Read(buffer, 0, buffer.Length)) > 0)

如何将Ilist转换为字节[]?我尝试了下面的代码,但得到了空值

  byte[] buffer = new byte[16*1024];
         using (MemoryStream ms = new MemoryStream())
         {
             int read;
             while ((read = m_streams[0].Read(buffer, 0, buffer.Length)) > 0)
             {
                 ms.Write(buffer, 0, read);
             }
             return ms.ToArray();
         }
使用LINQ和非常简单,这将为您连接字节数组

在处理完流后,请务必将其处理掉

//using System.Linq;

byte[] results = m_streams.SelectMany(s =>
{
    var buffer = new byte[s.Length];
    s.Read(buffer, 0, (int)s.Length);
    return buffer;
}).ToArray(); 

好的,谢谢,成功了。我更新代码是因为我遇到了错误。由于所讨论的请求本身非常奇怪,所以无论解决方案有多低效都无关紧要。。。但是对于实际大小的文件的实际使用,不要考虑动态地生成数组,但至少要计算大小并分配一次……AlxeILVENKOV C数组不能动态增长,所以我不确定具体指的是什么。此解决方案不包含任何ArrayList或List对象,只包含数组和枚举数。另外,我不确定这些是不是档案;它们只是具有未知细节的内存流。@JohnWu解决方案使用
ToArray
。它必须在构造最终数组时分配缓冲区。。。在4.7.x之前,它可能会在每个分配上复制数据(据我所知,最新的一个使用了避免在增长内部数组时出现额外副本的花招),哦,我明白了。您关心的是在.NET framework内的一个大型集合上的枚举器上使用
ToArray()
。当然,我认为您可以通过单个大数组和窗口读取来提高性能,没有太大的困难,尽管我不一定会将其分配给实习生进行编码。我无法理解此代码如何返回“null值”。。。你至少应该抄一本而不是第一本。。。