2017-02-15 48 views
0

這裏是我的表結構,所有列十進制:LINQ的SQL過濾列

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

像: 列1>如果(欄3> 0)欄3列2其他

從我的表,它應該返回只有2和5

我如何modfied這個來實現它:

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

非常感謝!

+0

就像您在僞代碼中寫的一樣; 'a.column3> 0? a.column3:a.column2' – Rob

回答

2

你令人難以置信地接近。只需將true替換爲a.column3即可:

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

我剛查過,LINQtoSQL的確把它轉換成WHERE [Column1]>(CASE WHEN [Column3] = 0 THEN [Column2] ELSE [Column3] END)' – NPras