2013-07-25 27 views
6

使用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.Skip(1).First().Text; 

或者:

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

謝謝弗朗西斯科。 「selectList.Skip(1)。首先()文本;」。完美地工作。 「Where」子句可以在我原來的帖子中使用,但實際上,「值」的編號與索引[](我只有索引編號)相同。 –

+0

沒有必要同時使用* .Where(a => b)*和* .First()*。只需使用* .First(a => b)*即可,其工作原理完全相同。 –

3

你可以將其轉換爲List這將讓您使用一個索引

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

實際上,這也不起作用 – GolfWolf

+0

@ w0lf它不以什麼方式工作?對我來說 – James

+0

它不會編譯; 'selectList.Items'似乎沒有'ToList'。我錯過了什麼嗎? – GolfWolf

0

試試這個

selectList.Items.ElementAt(0); 

需要using System.Linq命名空間

+0

這不起作用。 ElementAt()不是IEnumerable的成員。 –

0

也許這是你在找什麼?

selectList.Items.FindByValue("1").Text