2009-10-23 3 views
8

Je suis nouveau à l'aide de la Html.DropDownList dans le cadre MVC et j'ai du mal à comprendre comment sélectionner les données sur ma base de données pour se lier à la DropDownList. Existe-t-il un moyen facile de renvoyer une liste pouvant être liée (telle qu'une liste SelectList) à partir d'une requête LINQ standard?.net MVC, SelectLists, et LINQ

Répondre

12

Le constructeur SelectList prend un IEnumerable tout ce que vous devez faire est de passer la requête LINQ au constructeur comme si

var query = from c in customers 
         select c; 

var customerList = new SelectList(query, "CustomerId", "CustomerName"); 

Vous devriez le faire dans le contrôleur et ont le SelectList dans votre ViewModel.

8

Vous voulez utiliser le mot-clé select dans la requête LINQ:

var foo = new SelectList(from x in FooRepository.Items 
         select new SelectListItem { Text = x.Name, Value = x.Id }); 
+1

Cela ne fonctionne pas pour moi. J'essaie d'itérer la SelectList résultante comme decsribed [ici] (http://stackoverflow.com/a/5285272/1948038) et obtenir seulement System.Web.Mvc.SelectListItem comme texte et null comme valeur. –

0
var foo = FoorePository.Items.Select(s = > new SelectListItem 
             { 
              Text = s.Name, Value = s.Id.ToString() 
             } 
); 

Désolé sur le formatage.