2010-05-24 27 views
2

我有以下,我想返回包含在一過濾列表「組」沒有一個「組ID」的列表編譯的查詢:過濾列表,在編譯的查詢參數

CompiledQuery.Compile(ConfigEntities contexty, List<int> list) => 
    from c in context.Groups 
    where (!csList.Contains(c.GroupID)) 
    select c).ToList() 

但是我得到以下運行時錯誤:

The specified parameter 'categories' of type 'System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c261364e126]]' is not valid. Only scalar parameters (such as Int32, Decimal, and Guid) are supported.

任何想法?

回答

2

該查詢將在EF 4.

很好地工作在EF 1,IEnumerable.Contains不支持L2E(有或沒有CompiledQuery)。儘管如此,還是有一種解決方法。谷歌「BuildContainsExpression`,或look here

+0

呀剛剛在看看那個爲好,但我仍然得到同樣的錯誤信息。任何想法,爲什麼? – 2010-05-25 07:54:11

+0

如果是*正是*相同的消息,那麼你」不要使用EF 4.如果它是一個不同的消息,然後張貼它和你正在使用的實際查詢。您發佈的消息實際上不符合您的問題中的查詢,所以我懷疑有一些編輯正在進行。 – 2010-05-25 12:05:00

+0

等待;我需要使用EF4用於BuildsContainsExpression 精確查詢: _compiledRefreshListGraphQuery = CompiledQuery.Compile((DASConfigEntities上下文中,列表 cSList)=> context.Groups ?。 Where(ObjectQueryExt.BuildContainsExpression (e => e.GroupID,cSList))); – 2010-05-26 00:12:10