2014-02-12 105 views
2

工作,我有類似的東西在代碼SqlFunctions.StringConvert不雙打

SqlFunctions.StringConvert((double?) x.Latitude) 

但它總是返回一個整數,儘管它有一個緯度值。

有幫助嗎?

+0

你是什麼'Latitude'值,它應該返回一個字符串,而不是在'int' – Habib

+0

@Habib它的價值一樣,30.084524379285227,但它總是返回30 –

+0

也就是說奇怪,你可以檢查通過SQL事件探查器針對您的LINQ查詢生成的查詢 – Habib

回答

3

SqlFunctions.StringConvert(double?)返回一個轉換爲字符串的整數。要返回一個十進制值,您需要提供其他重載SqlFunctions.StringConvert(double? vaue, int length, int decimals)如下:

SqlFunctions.StringConvert((double?) x.Latitude, 20, 5) 

// If x.Latitude = 34.75, then the result will be "34.75000" 

從STR文檔:

數由默認或者如果小數點四捨五入到整數 參數爲0。

參考文獻:
SqlFunctions.StringConvert Method (Nullable)
SqlFunctions.StringConvert Method (Nullable, Nullable, Nullable)
STR (Transact-SQL)

+0

如果我這樣做,它會在右側添加零,我不希望發生這種情況 –

+0

可能的替代方法是在Linq查詢的末尾簡單使用'.ToList()',然後使用Linq進行格式化具有'x.Latitude.ToString()'的對象。 – wdosanjos

+0

對於STR文檔+1,很好的回答 – Habib