2011-12-30 41 views
1

我正在用LINQ填充「類別」下拉列表。 (羅斯文DATABSE)LINQ查詢在選擇後添加額外值

var Category = (from cat in _db.Categories.ToList() 
         select new SelectListItem 
         { 
          Text = cat.CategoryName, 
          Value = cat.CategoryID.ToString() 
         }).ToList(); 

我想在這個列表的開頭添加一個額外的價值是過濾器復位,像「所有」,所以我期待的下拉菜單是這樣的:

  • 所有//添加
  • 飲料//從查詢
  • 調味品//從查詢
+0

有什麼特別的原因,爲什麼你在做'_db .Categories.ToList()'。 'ToList()'似乎不是必需的。 – Magnus 2011-12-30 16:55:30

+0

你是對的,我會擺脫它 – 2011-12-30 16:57:03

回答

6
var Category = new[]{ new SelectListItem(){ Text = "All" } }.Concat(
        from cat in _db.Categories.ToList() 
        select new SelectListItem 
        { 
         Text = cat.CategoryName, 
         Value = cat.CategoryID.ToString() 
        }).ToList(); 
1

您可以將Insert的值轉換爲所需位置的列表。這應該夠了吧。

4

可以使用Concat與數組常量,像這樣:

var Category = new [] { new SelectListItem {Text="All"}} 
    .Concat(from cat in _db.Categories.ToList() 
     select new SelectListItem { 
      Text = cat.CategoryName 
     , Value = cat.CategoryID.ToString() 
     } 
    ).ToList(); 
1

List<T>有一個插入方法:

Category.Insert(0, new SelectListItem { Text="All" });