我是LINQ的新手,我需要用CASE語句編寫LINQ語句。我試圖將以下查詢轉換爲linq。這裏1和0是布爾值。我怎樣才能實現這一目標在LINQ中寫入case語句
Select CASE [db].[table] WHEN 1 THEN 'Yes' WHEN 0 THEN 'No' END AS Options from table
我嘗試以下,但現在工作
Options = table.Options = 1 ? "Yes" : table.Options = 0 ? "No"
我是LINQ的新手,我需要用CASE語句編寫LINQ語句。我試圖將以下查詢轉換爲linq。這裏1和0是布爾值。我怎樣才能實現這一目標在LINQ中寫入case語句
Select CASE [db].[table] WHEN 1 THEN 'Yes' WHEN 0 THEN 'No' END AS Options from table
我嘗試以下,但現在工作
Options = table.Options = 1 ? "Yes" : table.Options = 0 ? "No"
請更改爲:
Options = table.Options == 1 ? "Yes" : "No";
正如我剛纔所說我正在檢查與布爾值,在這裏我得到的錯誤常數值1不能轉換爲布爾 – Superprogrammer
這是因爲你有table.Options = 1。就像我說的,改爲double =,如在「表」。選項== 1「 – chrisl08
@ chrisl08將該配置添加到您的答案正文。 – LPs
你需要解決的表: 我會嘗試:
Options = db.table.ToList().Select(X => X.Options == 1 ? "Yes" : "No";
有你做錯了一些事情 - 一個,三元運算符的語法是
condition ? resultIfTrue : resultIfFalse
其次,您需要使用等號(==
)作比較,而不是分配(=
)運算符。
因此,table.Options = 1 ? "Yes" : table.Options = 0 ? "No"
應
table.Options == 1 ? "Yes" : "No"
根據您的實際LINQ提供程序所取代,有可能是一個幫手,讓你建立類似SQL的case
表達式(無論是有條件的,選擇-Y型),但如果不知道你使用的是什麼,這是不可能的。如果沒有幫手,你必須去做三元操作符(這對於閱讀單個條件來說有點瘋狂,但是噢,以及......)。
例如,我的LINQ提供程序使用的語法如下:
Case(table.Options).When(1, "Yes").Else("No").End()
或
Case().When(table.Options == 1, "Yes").Else("No").End()
但同樣,唯一的標準方式是三元運算符。查看你的特定LINQ提供者的文檔,看看它是否支持類似SQL的case
表達式以及如何。
_「但現在工作」_所以沒有問題了?如果你的意思是「不」,那麼它現在的工作方式是什麼,你會得到一個異常嗎?如果是這樣,什麼樣的例外? –
當然這是'tables.ToList()。Select(x => x.Options == 1?「Yes」:「No」);' –
'Select CASE [db]。[table]'無效SQL,因爲'[db]。[table]'是表格而不是列。 –