C# 转换列表<;字节[]>;到字节[]
我使用Gtk,需要将C# 转换列表<;字节[]>;到字节[],c#,type-conversion,gtk#,C#,Type Conversion,Gtk#,我使用Gtk,需要将List转换为Byte[]。我找到了此操作的示例,但它是.NET Framework的示例,当我尝试使用Gtk#执行此操作时,出现了一些编译错误: “TypeSystem.Collections.Generic.List”不包含 的SelectMany'和无扩展方法的定义 键入System.Collections.Generic.List'可以找到(您是吗 缺少using指令或程序集引用?(CS1061)” 如何解决此错误,或者我可以使用其他Gtk的转换方法?IEnumera
List
转换为Byte[]
。我找到了此操作的示例,但它是.NET Framework的示例,当我尝试使用Gtk#执行此操作时,出现了一些编译错误:
“TypeSystem.Collections.Generic.List”不包含
的
SelectMany'和无扩展方法的定义
键入System.Collections.Generic.List'可以找到(您是吗
缺少using指令或程序集引用?(CS1061)”
如何解决此错误,或者我可以使用其他Gtk的转换方法?IEnumerable的扩展是更高版本的.net framework的一部分,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;
}
私有静态字节[]转换列表(列表)
{
int-totalength=0;
foreach(列表中的字节[]b)
{
总长度+=b.长度;
}
字节[]结果=新字节[总长度];
int currentPosition=0;
foreach(列表中的字节[]byteArray)
{
foreach(字节数组中的字节b)
{
结果[当前位置]=b;
currentPosition++;
}
}
返回结果;
}
确保:
私有静态字节[]转换列表(列表)
{
List tmpList=新列表();
foreach(列表中的字节[]byteArray)
foreach(字节数组中的单字节)
tmpList.Add(单字节);
返回tmpList.ToArray();
}
几乎是另一个代码示例的较短版本。
使用System.Linq对.Net Framework 2.0进行测试Add
代码>在源代码文件中。@Dennis,这应该是答案
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();
}