我使用Gtk#,我需要将List<Byte[]>
转换为Byte[]
。我找到了此操作的示例here,但它是.NET Framework的示例,当我尝试通过Gtk#执行此操作时,我遇到了一些编译错误:
“输入
System.Collections.Generic.List<byte[]>' does not contain a definition for
SelectMany”,找不到扩展方法SelectMany' of type
System.Collections.Generic.List'(是吗? 缺少using指令或汇编引用?)(CS1061)“。
如何解决此错误或我可以使用的其他Gtk#转换方式?
答案 0 :(得分:1)
确保:
答案 1 :(得分:0)
IEnumerable的扩展是后来的.net框架版本的一部分,Gtk#可能没有它们,或者它们可能是另一个名称。
一个简单的(不确定是否有更简单的方法)方法是计算数组需要的总大小并将其初始化为该大小。然后遍历列表并将每个byte []中的数据放入新的byte []中,跟踪你所在阵列的距离。
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;
}
答案 2 :(得分:0)
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进行了测试