2015-08-20 84 views
0

如何在類中調用方法並將其用於我在LINQ中的選擇?嗯..這是我的意思是:我的班「法」保持版本的列表,並提供一個方法來獲得當前版本:LINQ&class method

public class Law 
{ 
    ... 
    public virtual IList<LawVersion> Versions {get; set;} 

    public LawVersion CurrentVersion() 
    { 
     // Given a list of Laws, how can I use this method in my selection clause? 
     return Versions.OrderByDescending(x => x.CreationDate).First(); 
    } 
} 

我想獲得所有當前LawVersions的名單。我曾嘗試這樣的:

Context.Laws.Select(x => x.CurrentVersion()) 

從而結束在

「LINQ實體無法識別方法..不能轉換 成商店表述」

+0

CodeCaster,你是對的。我一直在尋找錯誤的搜索詞。 – peter

+0

我發現的所有潛在重複項都來自希望將其C#方法翻譯爲查詢的人員。你的情況是不同的,請參閱我的答案。 – CodeCaster

+0

CurrentVersion應該返回一個列表:public IList CurrentVersion() – jdweng

回答

2

發生這種情況因爲Context.Laws是數據庫的接口,您執行的每個IQueryable操作都將由Entity Framework轉換爲查詢。像你的Select()電話。但它不能將你的C#方法翻譯成查詢,所以它會拋出。

您需要通過調用.ToList()第一兌現的列表,例如,然後打電話給你的方法列表:

Context.Laws.ToList().Select(x => x.CurrentVersion()) 
相關問題