我有以下代码,它过滤掉了菜单ID值8
oListVM = oListVM.Where(x => x.MenuID != 8).ToList(); //filter out menu id 8
但我想过滤掉菜单ID 8和13,所以我决定编写这样的代码。这是过滤掉8和13菜单ID的正确方法吗?我最近开始使用c#和 达网络。
oListVM = oListVM.Where(x => (x.MenuID != 8 && x.MenuID!=13)).ToList(); //filter out menu id 8 and 13
答案 0 :(得分:1)
您也可以
oListVM = oListVM
.Where(x => x.MenuID != 8)
.Where(x => x.MenuID != 13)
.ToList(); //filter out menu id 8 and 13
链接在被访问时被评估" - 通过.ToList()
您可以立即访问并保留整个迭代。如果您将所有条件塞入一个Where
条件或链接它们,那么Linq-Statement没有任何区别。
如果您决定同时阻止14,18,22,您还可以使用另一个linq来检查是否有(不)在一系列事物中:
var doNotShow = new [] {8, 13, 14, 18, 22};
oListVM = oListVM
.Where(x => ! doNotShow.Any(d => x == d))
.ToList();
答案 1 :(得分:1)
你是对的
oListVM = oListVM.Where(x => (x.MenuID != 8 && x.MenuID!=13)).ToList(); //filter out menu id 8 and 13
是一种有效的方法。另外,假设您有两个以上的ID,只需使用Array
或List
:
int[] filterArray = new int[6] {1,5,6,8,13,14};
oListVM = oListVM.Where(x => !filterArray.Contains(x)).ToList();