2012-05-02 13 views
0

私は以下のコードを持っています。私は1つのステートメントにそれを組み合わせる方法があるように私に見えますが、私はこれを行う方法がわかりません。このC#コードを組み合わせる方法はありますか?

List<SelectListItem> items = new List<SelectListItem>(); 

var emptyItem = new SelectListItem(){ 
    Value = "", 
    Text = "00" 
}; 

items.Add(emptyItem); 

ViewBag.AccountIdList = new SelectList(items); 

誰かがこれを簡略化できるかどうか教えてください。

おかげで、

+1

これはC#/ .netバージョンiircによって異なります。コレクションとオブジェクトのイニシャライザが追加されたときに実際にはわかりません。 – ChristopheD

+3

彼は上記のコードでオブジェクト初期化子を使用しているので、彼がそこに良いと仮定するのはおそらく安全でしょう。 –

+0

@JamesMichaelHare:はい、非常に真実な発言;-) – ChristopheD

答えて

9

はい、あなたは、アイテムを作成するために一緒に収集し、オブジェクト初期化子を使用してリストに追加し、すべて1つのステートメントでリストをラップすることができます。私は自分のライン上のすべてのカーリーでそれを入力することを好むか

ViewBag.AccountIdList = new SelectList(
    new List<SelectListItem> 
    { 
     new SelectListItem 
     { 
      Value = "", 
      Text = "00" 
     } 
    }); 

上記のインデントスタイル

ですが、あなたが望んでいた場合でも、1行もできました。

いずれにしても、1つのステートメントです。

ViewBag.AccountIdList = new SelectList(
    new [] 
    { 
     new SelectListItem 
     { 
      Value = "", 
      Text = "00" 
     } 
    }); 

両方を:

そしてついでにあなただけIEnumerableを取るList<SelectListItem>からSelectListコンストラクタを、合格しているので、あなただけの代わりに、もう少しパフォーマンスのためのリストの1の配列を渡すことができますこの場合も同じように動作しますが、後者はもう少し効率的ですが、どちらも問題なく、好きなのはあなた次第です。詳細については、single item as an IEnumerable<T> sequenceを返すさまざまな方法を比較して短いブログエントリを作成しました。

0

このようなものは、あなたが手に入れられる最も近いものです。

List<SelectListItem> items = new List<SelectListItem>(); 
items.Add(new SelectListItem(){ 
    Value = "", 
    Text = "00" 
}); 
ViewBag.AccountIdList = new SelectList(items); 
1

これを試してみてください:

var items = new List<SelectListItem>() 
{ 
    new SelectListItem { Value = "", Text = "00" } 
} 

ViewBag.AccountIdList = new SelectList(items); 
2
ViewBag.AccountIdList = new SelectList(new List<SelectListItem> { new SelectListItem { Value = "", Text = "00"} }); 
0

少ない 読める 検証可能な、IMO ...しかし、あなたは書くことができます。

items.Add(new SelectedListItem(){ 
    Value = "", 
    Text = "00" 
}); 

私はこれ以上のものをお勧めしません一言でこの文は、ValueTextするための方法受諾パラメータにリファクタリングすることができます。

ViewBag.AccountIdList = new SelectList(items.Add(CreateSelectedItem("someValue", "someText")); 
0

ViewBag:

// now this is a unit testable method 
SelectedListItem CreateSelectedItem (string value, string text) { 
    return new SelectedListItem(){ 
     Value = value, 
     Text = text 
    }; 
} 

は今、あなたは簡潔でありながら、それが何をするかで非常に明確である次のことを書くことができます。 AccountIdList = new SelectList(リストアイテム=新しいリスト{新しいSelectListItem {値= ""、テキスト= "00"}});

0
ViewBag.AccountIdList = new List<SelectListItem>{new SelectListItem{Value = "", Text = "00"}}; 
関連する問題