Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转换为表达式_C#_.net_Entity Framework_Linq To Entities - Fatal编程技术网

C# 转换为表达式

C# 转换为表达式,c#,.net,entity-framework,linq-to-entities,C#,.net,Entity Framework,Linq To Entities,如何将此方法转换为可在linq中使用的表达式以转换为实体: public bool IsMatch(long additionId) { return AdditionsPrices.Any(x => x.AdditionId == additionId); } 谢谢 为什么不直接执行Contains()查询-从AdditionsPrices中提取列表: List<long> additionIds = AdditionsPrices.

如何将此方法转换为可在linq中使用的表达式以转换为实体:

    public bool IsMatch(long additionId)
    {
        return AdditionsPrices.Any(x => x.AdditionId == additionId);
    }

谢谢

为什么不直接执行Contains()查询-从
AdditionsPrices
中提取
列表

List<long> additionIds = AdditionsPrices.Select( x => x.AdditionId)
                                        .ToList();
这就是解决方案:

public Expression<Func<Addition, bool>> IsMatch(long additionId)
    {
        return a => a.AdditionsPrices.Any(x => x.AdditionId == additionId);
    }
公共表达式IsMatch(长附加ID)
{
返回a=>a.AdditionsPrices.Any(x=>x.AdditionId==AdditionId);
}

欢迎光临。问题是什么?@BrunoLM:我不知道如何将这个方法转换成一个表达式,在实体框架的查询中可以在linq to entities上执行。我将编写一个使用IsMatch方法的查询。但我总是遇到一个例外,linq to实体无法识别该方法。所以我想创建一个新的IsMatch方法来返回表达式。您可以在这里看到有关我的问题的更多信息:在您的情况下,这需要传输非基本类型的列表(
AdditionsPrices
)说到SQL——我认为这不会起作用——当然我可能错了。所以你说在.NET 4.0中没有办法解决这个问题?@Naor:考虑到你需要的表达式的依赖性和复杂性,我并不知道有什么映射到SQL的方法可以满足你的需要。
public Expression<Func<Addition, bool>> IsMatch(long additionId)
    {
        return a => a.AdditionsPrices.Any(x => x.AdditionId == additionId);
    }