LINQ查询在select之后添加额外的值

本文关键字:添加 之后 查询 select LINQ | 更新日期: 2023-09-27 18:19:09

我正在用LINQ填充一个"Category"下拉列表。(Northwind数据库)

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

我希望在这个列表的开头添加一个额外的值作为过滤器重置,类似于"All",所以我希望下拉菜单是这样的:

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

LINQ查询在select之后添加额外的值

    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();

您可以将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();

您可以将值插入到列表中所需的位置。应该可以了

List<T>有一个Insert方法:

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