按多个条件筛选列表

时间:2012-02-01 12:05:23

标签: c# .net

我正在尝试过滤多列上的列表。我知道我可以通过列表集合循环并过滤记录,有没有更好的方法?

我的第一个标准是colA != “X”,如果是colA == “Y”,则只检查此类型的colB值。

我必须允许colA上的所有值,除了“X”和if ColA == “Y” && colB == “T”(我只检查colB值if ColA == “Y”)我无法写这个。

基本上如果ColA ==“X”则不允许,如果ColA ==“Y”,则检查colB值并根据值进行过滤。允许其余的所有ColA值。

Accounts = Accounts.Where(acc => acc.ColA != “X” || ??).ToArray();

2 个答案:

答案 0 :(得分:2)

Accounts.Where(acc => !(acc.ColA == "X" || (acc.ColA == "Y" && acc.ColB == "T"))).ToArray();

但是,我认为这更具可读性:

Accounts
    .Where(acc => !(acc.ColA == "X"))
    .Where(acc => !(acc.ColA == "Y" && acc.ColB == "T"))
    .ToArray();

答案 1 :(得分:1)

string columnBValue = "T";
Accounts = Accounts.Where(acc => 
                      acc.ColA != “X” 
                      && 
                      (x.ColA != "Y" || 
                      (x.ColA == "Y" && x.ColB == columnBValue)))
                   .ToArray();