2012-11-06 6 views
12

オブジェクトとその特定の順序のオブジェクトのリストを含むリストを初期化したい。現在、私がやっている:私は初期化ステートメントの中にそれを統合するために期待していた単一のオブジェクトと別のオブジェクトリストの両方でリストを初期化する

List<MyObject> list = new List<MyObject>(); 
list.Add(object1); // object1 is type MyObject 
list.AddRange(listOfObjects); // listOfObjects is type List<MyObject> 

(構文はもちろん間違っている):

List<MyObject> newList = new List<MyObject>() { object1, listOfObjects }; 

簡潔にこれを行う方法はありますか?

+0

これはLINQとは関係がありません(.NET 2.0以降にはジェネリックコレクションが存在していました)ので、再タグ付けしました。 – Adam

+0

最初のコードスニペットにはどのような問題がありますか?どのようにしてそれがどのように不満足で問題になっていますか?事実上、他のオプションは、より複雑で、より多くのコードを使用し、読みにくく、パフォーマンスが低下する可能性が高くなります。私はあなたが時間を費やすことができるあなたのプロジェクトのより問題のある側面があると確信しています。 – Servy

+0

@Servy私のコード部分に問題があるとは言いませんでした。私はリストを初期化するより簡潔な方法があるかどうか尋ねました。私はそこにある選択肢のすべてを知っているわけではないので、なぜ私は質問したのですか?私は、他のほとんどの方法(私が知っているものはほとんど)がより複雑であるか、または読みにくいことに同意します。あなたのご意見ありがとうございます。 –

答えて

17

要素の順序が重要でない場合は、あなたが使用することができます。

List<MyObject> newList = new List<MyObject>(listOfObjects) { object1 }; 

これは受け入れList<T>コンストラクタを使用して動作しますIEnumerable<T>、次に他の項目を追加するためのコレクション初期化子。たとえば、次のよう

static void Main() 
{ 
    int test = 2; 
    List<int> test2 = new List<int>() { 3, 4, 5 }; 
    List<int> test3 = new List<int>(test2) { test }; 

    foreach (var t in test3) Console.WriteLine(t); 

    Console.ReadKey(); 
} 

が印刷されます:個々の項目は最後を追加される順序は、しかし、あなたのオリジナルとは異なることに

3 
4 
5 
2 

注意を。

List<MyObject> newList = new List<MyObject> { object1 }; 
newList.AddRange(listOfObjects); 

これは意図が非常に明確になり、建設を避ける:順序が重要な場合は、しかし、私は個人的にちょうど初期化子であなたの最初のオブジェクトに配置し、かつAddRangeを呼び出して、リストを作成う

(LINQのConcatなどを使用して必要となる)一時的なアイテム

+0

私は彼が 'object1'を結果リストの最初に来たいと思うので、これはうまくいきません。 – Lee

+1

@Leeええ - そういうわけで私はその質問に特別にタグを付けました。また、重要な順序でオプションを追加しました。 –

7

私はあなたができる最善だと思います:

List<MyObject> newList = new[] { object1 }.Concat(listOfObjects).ToList(); 
+1

+1私から - しかし、これはいくつかの余分な "ゴミ"を作成するので、あなたはちょうど捨てられる配列を作っていることを実現する。大したことではありませんが、メソッド呼び出しを避けるためにちょっと混乱しているように思えます;) –

+0

これは彼が始めたコードスニペットよりも読みやすく、理解しやすいと思いますか?私はこれが前進ではなく後退であると言います。 – Servy

+0

@Servy - 質問はより簡潔な方法を求めていましたが、これがあります。 – Lee

関連する問題