我正在尝试过滤多列上的列表。我知道我可以通过列表集合循环并过滤记录,有没有更好的方法?
我的第一个标准是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();
答案 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();