using System.ComponentModel.DataAnnotations;
using System.Collections.Generic;
namespace HelloWorldMvcApp
public int Id { get; set; }
public string Name { get; set; }
public string Title {get; set; }
[Display (Name= "Select the phone")]
public int SelectedProductId { get; set; }
public IEnumerable<System.Web.Mvc.SelectListItem> ProductItems { get; set; }
public sealed class ProductRepository : IProductRepository
readonly List<Product> fakeData = new List<Product>();
public ProductRepository()
fakeData.Add(new Product() { Id = 1, Name = "iPhone" });
fakeData.Add(new Product() { Id = 2, Name = "Windows Phone"});
fakeData.Add(new Product() { Id = 3, Name = "Android" });
public IQueryable<Product> All
get { return fakeData.AsQueryable(); }
public interface IProductRepository
IQueryable<Product> All {get;}
public static class Extensions
public static IEnumerable<SelectListItem> ToSelectListItems(this IEnumerable<Product> items,
IEnumerable<SelectListItem> selectListItems = items.OrderBy(i => i.Name)
.Select(product => new SelectListItem
Selected = (product.Id == selectedId),
Value = product.Id.ToString()
return DefaultItem.Concat(selectListItems);
public static IEnumerable<SelectListItem> DefaultItem
return Enumerable.Repeat(new SelectListItem