2017-02-15 6 views
0

をフィルタリングし、私のテーブルの構造、すべての列の10進数です: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>(COLUMN3> 0)であればCOLUMN3他COLUMN2

私のテーブルから、それだけで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

あなたは非常に近いです。 truea.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

関連する問題