从数据库中筛选 MVC 选择列表

本文关键字:选择 列表 MVC 筛选 数据库 | 更新日期: 2023-09-27 18:36:49

如何过滤从数据库中填充的 SelectList? 在此示例中,我只希望白色兔子(颜色是兔子对象上的属性)显示在列表中。 我试图在选择的末尾添加一个位置,但我只能看到 ID 和名称作为我可以过滤的条件。

var bunnies = db.Bunnies.Select(x => new SelectListItem
                                                    {
                                                        Value = x.Id.ToString(),
                                                        Text = x.Name,
                                                    }
                                                    );
        return new SelectList(bunnies , "Value", "Text");

我想我可以做这样的事情:

var bunnies = db.Bunnies.Select(x => new SelectListItem
                                                    {
                                                        Value = x.Id.ToString(),
                                                        Text = x.Name,
                                                    }
                                                    ).Where(p => p.Color == "white");
        return new SelectList(bunnies , "Value", "Text");

从数据库中筛选 MVC 选择列表

与 SQL 不同,在 LINQ 中,Where 子句往往位于 Select 子句之前(除非您只想筛选在 Select 子句中投影出的那些字段):

var bunnies = db.Bunnies.Where(p => p.Color == "white")
                        .Select(x => new SelectListItem
                                         {
                                            Value = x.Id.ToString(),
                                            Text = x.Name,
                                         });

你可以用这种更简单的方式过滤

ViewBag.RoomList = new SelectList(db.rooms.Where(p => p.hotel_id == 626191), "room_id", "title");