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 的 QUERYMETHOD 两种方法的解决方案。

在 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# 端,小数是更适合使用的类型。