這是我的 C# 代碼:
double amount_dbl = double.Parse("0.00001167");
using (Crypto_Shuffler_Entities entities = new Crypto_Shuffler_Entities())
{
double amount_dbl = double.Parse("0.00001167");
var order = (from Order in entities.Orders
where Order.BTC_Address == "123" && double.Parse(Order.BTC_Amount) == amount_dbl
select Order).FirstOrDefault();
if (order != null)
{
}
}
BTC_Amount在 sql server 中是字串。
我真的不知道為什么我有這樣的錯誤:
LINQ to Entities 無法識別方法 'Double Parse(System.String)' 方法,并且此方法無法轉換為存盤運算式。
請給我一個LINQ 的QUERY和METHOD方式的解決方案。
uj5u.com熱心網友回復:
在 SQL Server 中有一個 double 值作為字串是有問題的。那么您可能還想將其作為字串進行比較而不進行決議。假設您希望您進行決議,double.Parse() 在 EF 中沒有相應的轉換,您可以在客戶端間接進行:
var order = (from Order in entities.Orders
where Order.BTC_Address == "123" select Order)
.AsEnumerable()
.Where(o => double.Parse(o.BTC_Amount) == amount_dbl)
.FirstOrDefault();
從現在開始,您擁有 AsEnumerable(),它是客戶端。
編輯:這是方法:
var order = entities.Orders
.Where(Order => Order.BTC_Address == "123")
.AsEnumerable()
.Where(o => double.Parse(o.BTC_Amount) == amount_dbl)
.FirstOrDefault();
PS:我會直接撰寫雙精度值,而不是像您的示例中那樣從字串決議。
PS2:也不要忘記,使用 double 你不太可能得到相等的值。在 SQL 服務器和 C# 端,小數是更合適的型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/414421.html
標籤:
