从DB过滤MVC SelectList

and*_*ndy 1 c# linq asp.net-mvc linq-to-sql

如何过滤从数据库中填充的SelectList?在这个例子中,我只想要在列表中显示白色兔子(颜色是兔子对象上的属性).我试图在Select的末尾添加一个位置,但我只能看到Id和Name作为我可以过滤的条件.

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

                                                    }
                                                    );
        return new SelectList(bunnies , "Value", "Text");
Run Code Online (Sandbox Code Playgroud)

我以为我可以这样做:

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");
Run Code Online (Sandbox Code Playgroud)

Iro*_*n84 6

不像在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,
                                         });
Run Code Online (Sandbox Code Playgroud)