簡體   English   中英

在Entity框架中使用Math函數和mysql

[英]Using Math functions in Entity framework with mysql

我正在開發ASP.NET MVC應用程序並在其中使用帶有實體框架的Mysql。 但我遇到像這樣執行Linq查詢的問題:

var place= dbContext.Places.FirstOrDefault(x => Math.Sqrt(x.Lat) > 0);

我也嘗試過使用SqlFunctions:

var place= dbContext.Places.FirstOrDefault(x => SqlFunctions.SquareRoot(x.Lat) > 0);

但無論哪種方式,我得到'System.NotSupportedException':

附加信息:類型為'System.Data.Entity.SqlServer.SqlFunctions'的指定方法'System.Nullable 1[System.Double] SquareRoot(System.Nullable 1 [System.Decimal])'無法轉換為LINQ to實體存儲表達式。

有沒有辦法使用Square root函數,以便它可以轉換為LINQ to Entities表達式?

實體框架不支持Sqrt功能:

數學規范函數 - 支持的函數列表。

所以你可以使用Math.Pow insted:

var place= dbContext.Places.FirstOrDefault(x => Math.Pow(x.Lat,0.5) > 0);

在這里,您嘗試對不受支持的sql數據庫執行math.sqrt。

您需要使用SQLFunctions或在dbContext.Places之后執行ToList()。 但是,根據您帶回的地方數量,這將是低效的。

var place = dbContext.Places.ToList()。FirstOrDefault(x => Math.Sqrt(x.Lat)> 0);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM