【问题标题】:Linq SQL to filter columnsLinq SQL 过滤列
【发布时间】:2017-02-15 00:18:15
【问题描述】:

这是我的表结构,所有列小数:

表格

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 > if (column3 > 0) column3 else column2

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

我如何修改它来实现它:

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

非常感谢!

【问题讨论】:

  • 就像你用伪代码写的一样; a.column3 &gt; 0 ? a.column3 : a.column2

标签: c# sql linq


【解决方案1】:

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

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

【讨论】:

  • 我刚刚检查过,LINQtoSQL 确实将其转换为 WHERE [Column1] &gt; ( CASE WHEN [Column3] = 0 THEN [Column2] ELSE [Column3] END )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 2016-12-09
相关资源
最近更新 更多