LINQ查询在选择后添加额外值

时间:2011-12-30 16:43:59

标签: c# linq drop-down-menu

我正在使用LINQ填充“类别”下拉列表。 (Northwind数据库)

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

我希望在此列表的开头添加一个额外的值作为过滤器重置,类似于“全部”,所以我希望下拉列表如下:

  • 全部//添加
  • 饮料//来自查询
  • 调味品//来自查询

4 个答案:

答案 0 :(得分: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 :(得分: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();

答案 2 :(得分:1)

您可以Insert将值放入所需位置的列表中。这应该可以解决问题。

答案 3 :(得分:1)

List<T>有一个Insert方法:

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