Linq SQL过滤列

时间:2017-02-15 00:18:16

标签: c# sql linq

这是我的表结构,所有列十进制:

id column1 column2 column3
1   11.00   11.12   11.12
2   5.00    4.95    0
3   7.00    7.05    0
4   6.00    6.05    6.06
5   9.00    9.05    8.5

如果我这样查询:

List<stuff> stuffs = db.table.Where(a => a.column1 > a.column3).ToList();

它返回第2,3和5行。

但是,我需要检查column3是否为零,然后如果需要检查column2

像: column1&gt; if(column3&gt; 0)column3 else column2

从我的表中它应该只返回2和5.

我如何修改它来实现它:

List<stuff> stuffs = db.table.Where(a => a.column1 > (a.column3 == 0 ? a.column2 : true)).ToList();

非常感谢!

1 个答案:

答案 0 :(得分:2)

你非常接近。只需将true替换为a.column3

即可
List<stuff> stuffs =
    db.table.Where(a => a.column1 > (a.column3 == 0 ? a.column2 : a.column3)).ToList();