2017-12-04 5 views
1

私は8C#で2つのIDを除外する方法は?

oListVM = oListVM.Where(x => x.MenuID != 8).ToList(); //filter out menu id 8 

メニューのid値をフィルタリングしかし、私はメニューID 8と13をフィルタリングしたかったので、私はこのようなコードを書くために決定されたコードの下に持っています。これは、8と13の両方のメニューIDを除外する正しい方法ですか?私は最近、C#と .netで作業を始めました。

oListVM = oListVM.Where(x => (x.MenuID != 8 && x.MenuID!=13)).ToList(); //filter out menu id 8 and 13 
+5

はいそれは正しいです:追加では、ちょうどArrayまたはListを使用し、あなたが2つの以上のIDを持っていると言います。 –

+1

デバッグを使用し、自分で確認してください –

答えて

1

あなたは

oListVM = oListVM.Where(x => (x.MenuID != 8 && x.MenuID!=13)).ToList(); //filter out menu id 8 and 13 
正しいです

は有効な方法です。

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

また

oListVM = oListVM 
    .Where(x => x.MenuID != 8) 
    .Where(x => x.MenuID != 13) 
    .ToList(); //filter out menu id 8 and 13 

を行うことができ、それが「アクセス」されたときにリンクが評価され、 - .ToList()によってあなたが一度に全体の繰り返しにアクセスし、保持されます。すべての条件を1つの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(); 
関連する問題