2012-10-24 104 views
1

我有一個名爲'length',類型爲varchar(10)的字段的表。這些字段包含「實數」(帶小數點的分數 - 例如647.45224) - 表示爲字符串。 我想打電話給一個LINQ到SQL查詢,將責令SELECT的結果,本場(其數值表示),像這種「原生」的SQL查詢:按字符串順序排列爲Float

SELECT * FROM [Table] ORDER BY CAST(length AS float) DESC 

我已經嘗試了幾種告訴LinqToSQL將字符串轉換爲浮點數的方法,但運行時會返回一個轉換錯誤(注意,沒有智能感知錯誤,也沒有編譯期間的錯誤,僅在執行時)。

我已經試過:

Results = dbx.[Items].Where([conditions]).OrderByDescending(b => float.Parse(b.length)) 

我也會滿足於四捨五入和轉換,以int和由排序(雖然我寧願使用的課程的實數),我嘗試:

Results = dbx.[Items].Where([conditions]).OrderByDescending(b => Convert.ToInt32(b.length)) 

但是,這也給出了一個錯誤。

有什麼辦法嗎?

回答

1

您需要使用Convert.ToDouble

dbx.[Items].Where([conditions]).OrderByDescending(b => Convert.ToDouble(b.length)) 

它會生成以下SQL

ORDER BY CONVERT(Float,[t0].[length]) 

注意SQL服務器類型float是一樣的.NET類型double(不float

+0

謝謝,我之前避免了它,因爲在嘗試鍵入它時,Intelisense會說「此方法將始終返回[... exceptio n]「, 但如果仍然使用它 - 那麼它編譯和工作,因爲它應該... –