LINQ & class method

本文关键字:class method amp LINQ | 更新日期: 2023-09-27 18:08:51

如何在类中调用方法并在LINQ中使用该方法进行选择?嗯. .这就是我的意思:我的类"Law"保存了一个版本列表,并提供了一个获取当前版本的方法:

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();
    }
}

我想获得所有当前lawversion的列表。我试过了:

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

结尾

"LINQ to Entities不识别该方法.. "无法翻译存储表达式"

LINQ & class method

这是因为Context.Laws是数据库的接口,您在其上执行的每个iquerable操作都将由实体框架转换为查询。就像你的Select()呼叫。但是它不能把你的c#方法转换成查询,所以它抛出。

你需要首先实现列表,例如通过调用.ToList(),然后调用该列表上的方法:

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