转换List< Byte[]比;到Byte[]

本文关键字:Byte List 转换 | 更新日期: 2023-09-27 18:10:32

我使用gtk#,我需要将List<Byte[]>转换为Byte[]。我在这里找到了这个操作的样本,但它是。net框架的样本,当我尝试用gtk#来做它时,我有一些编译错误:

"Type System.Collections.Generic.List<byte[]>' does not contain a definition for SelectMany' and no extension method SelectMany' of type System.Collections.Generic. "可以找到一个列表(你是吗缺少using指令或程序集引用?)(CS1061)".

我如何解决这个错误或者我可以使用其他gtk#的转换方法?

转换List< Byte[]比;到Byte[]

确保:

  1. 你正在使用。net框架3.5或更高版本。
  2. 你有一个System.Core的引用。
  3. 您有"正在使用系统"。

IEnumerable的扩展是以后的。net框架版本的一部分,gtk#可能没有它们,或者它们可能在另一个名称下。

一个简单的方法(不确定是否有更简单的方法)是计算数组需要的总大小,并将其初始化为该大小。然后循环遍历列表,将每个字节[]中的数据放入新字节[]中,方法是跟踪遍历数组的距离。

private static Byte[] ConvertList(List<Byte[]> list)
    {
        int totalLength = 0;
        foreach (byte[] b in list)
        {
            totalLength += b.Length;
        }
        byte[] result = new byte[totalLength];
        int currentPosition = 0;
        foreach (byte[] byteArray in list)
        {
            foreach (byte b in byteArray)
            {
                result[currentPosition] = b;
                currentPosition++;
            }
        }
        return result;
    }
private static Byte[] ConvertList(List<Byte[]> list)
    {
        List<Byte> tmpList = new List<byte>();
        foreach (Byte[] byteArray in list)
            foreach (Byte singleByte in byteArray)
                tmpList.Add(singleByte);
        return tmpList.ToArray();
    }

几乎是另一个代码示例的简短版本。.Net Framework 2.0