LINQ To Entity - LINQ to Entities 无法识别方法 'Double Parse(System.String)' 方法
LINQ To Entity - LINQ to Entities does not recognize the method 'Double Parse(System.String)' method
这是我的 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 服务器中是字符串。
我真的不知道为什么会出现这样的错误:
LINQ to Entities does not recognize the method 'Double
Parse(System.String)' method, and this method cannot be translated
into a store expression.
请给我一个 LINQ 的 QUERY 和 METHOD 两种方法的解决方案。
在 SQL 服务器中将双精度值作为字符串存在是有问题的。那么你可能还想将它作为字符串进行比较而不进行解析。
假设您希望进行解析,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# 端,小数是更适合使用的类型。
这是我的 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 服务器中是字符串。
我真的不知道为什么会出现这样的错误:
LINQ to Entities does not recognize the method 'Double Parse(System.String)' method, and this method cannot be translated into a store expression.
请给我一个 LINQ 的 QUERY 和 METHOD 两种方法的解决方案。
在 SQL 服务器中将双精度值作为字符串存在是有问题的。那么你可能还想将它作为字符串进行比较而不进行解析。 假设您希望进行解析,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# 端,小数是更适合使用的类型。