興味のある2つのプロパティを持つオブジェクトの既存のコレクションがあります。両方のプロパティは同じ型です。私はプロパティ値からなる新しいシーケンスを作成したいと思います。ここでは(私が代わりに単純化のための私のカスタム型のタプルを使用しています)一つの方法です:中複数のプロパティ値で構成されるシーケンスを作成する
var list = new List<Tuple<string, string>>
{ Tuple.Create("dog", "cat"), Tuple.Create("fish", "frog") };
var result =
list.SelectMany(x => new[] {x.Item1, x.Item2});
foreach (string item in result)
{
Console.WriteLine(item);
}
結果:
dog cat fish frog
は、これは私が望む結果が得られますが、より良い方法がありますこれを達成します(特に、配列やコレクションを作成する必要はありません)。
編集:
また、これは二回のコレクションを反復処理のコストで、動作します:
var result = list.Select(x => x.Item1).Concat(list.Select(x => x.Item2));
"あなたが望む結果"とは何ですか?ギザギザの配列を持っている?匿名型のリストを作成していますか?... –
明白なことを言う危険があります。var result = new [] {"dog"、 "cat"、 "fish"、 "frog"};あなたはタプルのリストから始めなければなりません。 –
@jmh_gr - わかりやすく質問を編集しました。 'originalListFirstItem.StringProperty1'、' originalListFirstItem.StringProperty2'、 'originalListSecondItem.StringProperty1'、' originalListSecondItem.StringProperty2'などからなる 'IEnumerable'が必要です。 –
TrueWill