如何在c#中过滤掉2个ID?

时间:2017-12-04 05:51:33

标签: c# .net

我有以下代码,它过滤掉了菜单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

2 个答案:

答案 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,只需使用ArrayList

int[] filterArray = new int[6] {1,5,6,8,13,14};
oListVM = oListVM.Where(x => !filterArray.Contains(x)).ToList();