2016-10-27 34 views
2

複数の配列を1つに結合する必要があります。IEnumerableをバイト配列に変換する方法

IEnumerable<byte> Combine(byte[] a1, byte[] a2, byte[] a3) 
{ 
    foreach (byte b in a1) 
     yield return b; 
    foreach (byte b in a2) 
     yield return b; 
    foreach (byte b in a3) 
     yield return b; 
} 

は、しかし、私はよくIEnumerableに精通していないよ:私はこれを行うには良い方法であると考えられることがわかりました。結果をbyte[]に変換するにはどうすればいいですか?

ありがとうございます。

+1

'myEnumerable.ToArray()'?それとも、私はあなたが望むものを誤解したことがありますか? – MAV

+0

配列が必要な具体的な理由は何ですか? –

答えて

3

代わりにそれらを反復するだけでLINQの.Concat

var joint = a1.Concat(a2).Concat(a3); 

あなたは配列としてそれを返すようにしたい場合:

joint.ToArray(); 
+1

ありがとう、これは正常に動作します。 – Peter

+0

@Peter - あなたは歓迎です:) –

2

が、私はこのようにそれを記述します

IEnumerable<T> Combine<T>(params IEnumerable<T>[] stuff) 
{ 
    return stuff.SelectMany(a => a); 
} 

そして、次のような単一の配列にマージしてください:

var a = new byte[] { 0, 1, 2 }; 
var b = new byte[] { 0, 1, 2 }; 
var c = new List<byte> { 0, 1, 2 }; 

var merged = Combine(a, b, c).ToArray(); 

デッキ内のジョーカーに注意してください。入力を配列に制限する必要はありません。配列T[]IEnumerable<T>ですが、他にも多くのことがあります。

+0

これは関数全体を書く良い方法です。 –

+1

@GiladGreenありがとう。 –

関連する問題