2012-03-24 10 views
-2

Mögliche Duplizieren:
Concatenating a C# List of byte[]Liste der byte [] zu einem großen byte []

Ich habe eine Liste von byte[] und ich würde diese Liste zu einem großen byte[] verbinden möchten . Ich habe mehrere Möglichkeiten ausprobiert, aber ich scheine einige der Daten verloren, wenn ich versuche, die Bytes zu kombinieren.

Dies ist eine der Möglichkeiten, die ich versucht habe:

byte[] comebined = listOfBytes.Cast<byte[]>() 
        .Select(x => x) 
        .SelectMany(x => x).ToArray(); 

Meine Frage ist, wie kann ich eine Liste von byte[] in einer großen byte[] und dafür sorgen, kombinieren, dass keine Daten verloren gehen. Effizienz ist kein Problem in dieser Sache, solange es funktioniert.

All die Hilfe wird sehr geschätzt.

+2

Sie etwas versucht haben, aber "Es hat nicht funktioniert". Sie scheinen Daten verloren zu haben. Beschreiben Sie das viel detaillierter. –

+0

Es gibt nichts in diesem Code, das Daten verlieren würde. Woher kommen die Daten? Ist es möglich, dass die Daten bereits in einem früheren Stadium verloren gehen? – Guffa

Antwort

2
listOfBytes.SelectMany(x => x).ToArray(); 
+0

Während das funktionieren sollte, ist es das gleiche wie, was in der Frage ist: Sowohl die Cast () 'und' Select (x => x) 'effektiv nichts tun. Wenn das Snippet in der Frage * nicht funktioniert, wird Ihre Antwort auch nicht funktionieren. – hvd

+0

@hvd Ich habe es vor dem Posten getestet :) Ich weiß nicht, was das OP falsch macht. –

0

Verwenden Sie einfach SelectMany()

listOfBytes.SelectMany(n => n); 

erhalten Sie eine IEnumerable<byte> Objekt geben, wenn Sie es byte [] konvertieren möchten, können Sie dies tun, indem

listOfBytes.SelectMany(n => n).ToArray()