我怎么能这种方法转换为表达我可以在使用LINQ到实体:转换为表达
public bool IsMatch(long additionId)
{
return AdditionsPrices.Any(x => x.AdditionId == additionId);
}
谢谢!
我怎么能这种方法转换为表达我可以在使用LINQ到实体:转换为表达
public bool IsMatch(long additionId)
{
return AdditionsPrices.Any(x => x.AdditionId == additionId);
}
谢谢!
这就是:
List<long> additionIds = AdditionsPrices.Select(x => x.AdditionId)
.ToList();
,然后在EF Contains()
查询使用解决方案:
public Expression<Func<Addition, bool>> IsMatch(long additionId)
{
return a => a.AdditionsPrices.Any(x => x.AdditionId == additionId);
}
为什么你不只是做了一个contains()查询,而不是 - 提取List<long>
从AdditionsPrices
:
var results = context.SomeEntitySet
.Where(x => additionIds.Contains(x.AdditionId));
我打算写一个使用IsMatch方法的查询。但我总是得到这样的例外,即实体不能识别该方法。所以我想创建一个返回表达式的新的IsMatch方法。你可以在这里看到更多关于我的问题:http://stackoverflow.com/q/5845993/289246 – Naor 2011-05-02 03:06:50
这将需要在你的情况下将非基元类型('AdditionsPrices')的列表转移到SQL - 我不'我认为这是行得通的 - 当然我可能是错的。 – BrokenGlass 2011-05-02 03:10:44
所以你告诉有没有办法解决在.NET 4.0中的这个问题? – Naor 2011-05-02 03:17:27
欢迎光临。问题是什么? – BrunoLM 2011-05-02 02:59:30
@BrunoLM:我不知道如何将此方法转换为可以在linq上执行到实体框架查询中的实体的表达式。 – Naor 2011-05-02 03:00:33