2013-07-25 14 views
6

Verwenden von Visual Studio Express 2012 für Web und Razor, ich eine Auswahlliste:Erhalten Sie ein Textelement aus einer C# Select

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); 

Später, ich möchte den Text erhalten, die mit einem bestimmten Element in select. Als Neuling, würde ich glaube, ich könnte dies tun:

selectList.Items[1].Text 

Aber das führt zu der Nachricht,

„Indizierung nicht mit [], um einen Ausdruck des Typs‚System.Collections.IEnumerable‘bewerben“

Danke.

Antwort

11

Versuchen zugreifen würde können versuchen:

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

Oder:

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

Danke Francisco. "selectList.Skip (1) .First(). Text;" hat perfekt funktioniert. Die "Where" -Klausel würde in meinem ursprünglichen Beitrag funktionieren, aber in Wirklichkeit sind die "Werte" genauso wie der Index [] nummeriert (ich habe nur die Indexnummer). –

+0

Es ist nicht notwendig, sowohl * .Where (a => b) * und dann * .First() * zu verwenden. Benutze einfach * .First (a => b) *, was genauso funktioniert. –

3

Man könnte es konvertieren zu einem List, die Sie auf ein Indexer

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

eigentlich funktioniert das auch nicht – GolfWolf

+0

@ w0lf Es funktioniert nicht in welcher Weise? – James

+0

für mich kompiliert es nicht; 'selectList.Items' scheint keine 'ToList' zu haben. Fehle ich etwas? – GolfWolf

0

dieses Sie

selectList.Items.ElementAt(0); 

Notwendigkeit using System.Linq Namespace

+0

Dies funktioniert nicht. ElementAt() ist kein Mitglied von IEnumerable. –

0

Vielleicht ist es das, was Sie suchen?

Verwandte Themen