实体框架的集合值参数?
在我上一个项目中,我决定使用实体框架,这一切都进展顺利,直到我试图获得与数据“在”,我得到了一个错误。实体框架的集合值参数?
经过一个小小的搜索后,我想出了this post和that post。
这就是我要做的
var all = fooelements
.Where(l=>controlsToGet
.Contains(l.Control.Name));
是否有任何与lambda表达式或LINQ实体框架处理呢?
谢谢
大厦R I有一个提示,可以很容易地在这里做到这一点:
Tip 8 - How to write 'WHERE IN' style queries using LINQ to Entities
希望这有助于
亚历克斯·詹姆斯
项目经理 - 实体框架团队
非常感谢,这就是我在寻找并感谢你的框架提示链接 – 2009-08-26 21:43:36
我不知道的方式来产生与EF一WHERE IN
条款,但您可以使用表达式树来构建一个WHERE
条款,这将考验每一个你的价值观:
Expression<Func<FooEntity, bool>> seed = l => false;
var predicate = controlsToGet.Aggregate(seed,
(e, c) => Expression.Lambda<Func<DataEventAttribute, bool>>(
Expression.OrElse(
Expression.Equal(
Expression.Property(
Expression.Property(
e.Parameters[0],
"Control"),
"Name"),
Expression.Constant(c)),
e.Body),
e.Parameters));
var all = fooelements.Where(predicate);
如果打印出来predicate
,你应该会看到像这样的表达:在以前的answe
l => ((l.Control.Name = ctrl5) || l.Control.Name = ctrl4 || ... || False)
非常感谢你 – 2009-08-26 21:42:59
什么是错误? – Lazarus 2009-08-26 15:53:29
“无法创建类型为'System.Collections.Generic.IEnumerable'1的常量值。在此上下文中仅支持基本类型(例如Int32,String和Guid)。” – 2009-08-26 15:59:15