2013-07-25 11 views
6

からテキストアイテムを取得し、私は選択リストを作成します。私はSelectListの内の特定の要素に関連付けられたテキストを取得したい、WebとカミソリのためのVisual Studio Expressの2012使ってC#のSelectListの

List<SelectListItem> list = new List<SelectListItem>(); 
list.Add(new SelectListItem { Text = "Yes", Value = "1" }); 
list.Add(new SelectListItem { Text = "No", Value = "2" }); 

SelectList selectList = new SelectList(list, "Value", "Text", null); 

後。初心者として、私は私がこれを行うことができると思うだろう:

selectList.Items[1].Text 

をしかし、メッセージの結果は、

「[]型の表現に 『System.Collections.IEnumerable』でインデックスを適用することはできません」という

ありがとうございます。

答えて

11

あなたが試すことができ、この

selectList.Items.ElementAt(0); 

必要using System.Linq名前空間を試してみて、あなたがインデクサーへのアクセスを与えるだろうListに変換できます。

selectList.Skip(1).First().Text; 

または:

selectList.Where(p => p.Value == "2").First().Text; 
+0

Franciscoに感謝します。 "selectList.Skip(1).First()。Text;"完璧に働いた。元の投稿では "Where"句が機能しますが、実際には "値"にはインデックス[]と同じ番号が付けられています(インデックス番号のみ)。 –

+0

* .Where(a => b)*と* .First()*の両方を使用する必要はありません。単に* .First(a => b)*を使うだけで、まったく同じように動作します。 –

3

あなたは

selectList.Items.ToList()[1].Text 
+0

実際にはどちらでも動作しません – GolfWolf

+0

@ w0lfどのように動作しませんか?私のためには – James

+0

はコンパイルされません。 'selectList.Items'は' ToList'を持っていないようです。何か不足していますか? – GolfWolf

0

+0

これは動作しません。 ElementAt()はIEnumerableのメンバーではありません。 –

0

たぶん、これはあなたが探しているものでしょうか?

selectList.Items.FindByValue("1").Text 
関連する問題