在我上一個項目中,我決定使用實體框架,這一切都進展順利,直到我試圖獲得與數據「在」,我得到了一個錯誤。實體框架的集合值參數?
經過一個小小的搜索後,我想出了this post和that post。
這就是我要做的
var all = fooelements
.Where(l=>controlsToGet
.Contains(l.Control.Name));
是否有任何與lambda表達式或LINQ實體框架處理呢?
謝謝
在我上一個項目中,我決定使用實體框架,這一切都進展順利,直到我試圖獲得與數據「在」,我得到了一個錯誤。實體框架的集合值參數?
經過一個小小的搜索後,我想出了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