嘗試使用一個變量之前(這有SQL Server做計算):EF + LINQ:我如何定義和使用一個變量(也許是一個Func變量)來定義Select語句的一部分?
IQueryable<MyEntity> query = _dbSet; // IQueryable<TEntity>
var results = query.Select(m => new MyViewModel
{
MyCalculation = m.Column1 * m.Column2
}).ToList();
我想要做的(動態創建我從函數求變量或一些其他類型的變量的select語句的一部分,允許什麼此):
IQueryable<MyEntity> query = _dbSet; // IQueryable<TEntity>
Func<MyEntity, decimal> funcVariableAttempt = m => m.Column1 * m.Column2;
var results = query.Select(m => new MyViewModel
{
MyCalculation = funcVariableAttempt.Invoke(m) // My foolish attempt does not work.
}).ToList();
我得到的錯誤,當我嘗試了我想要的(又名我愚蠢的嘗試):
LINQ到實體無法識別方法「System.Decimal INVO ke(MyProject.Repository.Models.MyEntity)'方法,並且此方法不能轉換爲商店表達式。
如何定義和利用一個變量(也許是一個Func變量)來定義Select語句的一部分?
你不能使用函數功能,它不能被傳遞到SQL層。 – Gusman
請參閱[本答案](https://stackoverflow.com/q/42067722/5951133)和一個可用於嵌入的庫[LinqKit](http://www.albahari.com/nutshell/linqkit.aspx) '表達式>在'IQueryable'中'' –