8

I am new to using the Html.DropDownList in the MVC framework and am having a hard time understading how to select the data out my database to bind to the DropDownList. Is there an easy way to return a bindable list (such as a SelectList) from a standard LINQ query?

Çağdaş Tekin
  • 16,592
  • 4
  • 49
  • 58
jimbo
  • 155
  • 1
  • 2
  • 6

3 Answers3

12

The SelectList constructor takes an IEnumerable so all you need to do is pass the LINQ query to the constructor like so

 var query = from c in customers
                        select c;

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

You should do this in the Controller and have the SelectList in your ViewModel.

willbt
  • 1,875
  • 13
  • 11
8

You want to use the select keyword in the LINQ query:

var foo = new SelectList(from x in FooRepository.Items
                         select new SelectListItem { Text = x.Name, Value = x.Id });
Chris Charabaruk
  • 4,367
  • 2
  • 30
  • 57
  • 1
    This does not work for me. I try to iterate the resulting SelectList as decsribed [here](http://stackoverflow.com/a/5285272/1948038) and get only System.Web.Mvc.SelectListItem as text and null as value. – Pavel K Sep 25 '13 at 12:33
0
    var foo = FoorePository.Items.Select(s = > new SelectListItem 
                                        {
                                          Text = s.Name, Value = s.Id.ToString()
                                        }
);

Sorry about formatting.

olq
  • 151
  • 1
  • 2
  • 9