C# 转换为表达式
如何将此方法转换为可在linq中使用的表达式以转换为实体: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.
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);
}