2015-11-12 4 views
6

Ich habe einen DropDownList eine Reihe von zehn Jahren enthalten, wie solche erstellt (2010-2020):Konvertieren meiner Liste <int> in eine List <SelectListItem>

var YearList = new List<int>(Enumerable.Range(DateTime.Now.Year - 5, ((DateTime.Now.Year + 3) - 2008) + 1)); 
ViewBag.YearList = YearList; 

Aber hier ist mein Problem, ich möchte zu haben ein Standardwert ausgewählt und behalten diesen Wert, wenn ich meine Informationen einreiche und ich möchte den Typ List<SelectListItem> dafür verwenden, da es praktischer ist.

in dieser Art Einmal werde ich einfach als solche tun einen ausgewählten Wert zu halten:

foreach (SelectListItem item in list) 
      if (item.Value == str) 
       item.Selected = true; 

Wie kann ich meine List<int> in ein List<SelectListItem> konvertieren?

+1

Sie legen 'item.Selected = true' nicht fest! Sie binden an eine Modelleigenschaft. Siehe meine Kommentare zu deiner letzten Frage –

Antwort

9

Versuchen Sie es mit Linq Umwandlung:

List<SelectListItem> item = YearList.ConvertAll(a => 
       { 
        return new SelectListItem() 
        { 
         Text = a.ToString(), 
         Value = a.ToString(), 
         Selected = false 
        }; 
       }); 

Dann wird das Element sein, die Liste der SelectListItem

6

Sie LINQ verwenden können, die Elemente aus einem List<int> in eine List<SelectListItem>, wie so zu konvertieren:

var items = list.Select(year => new SelectListItem 
{ 
    Text = year.ToString(), 
    Value = year.ToString() 
}); 
Verwandte Themen