與表

2015-10-05 52 views
0

我想有基於通用領域的字典從表連接查詢加盟字典得到錯誤,我的查詢是:與表

var query = from c in db.Exp 
join d in lstUniprotDic on c.UniID equals d.Key 
select new 
{    
    c.UniID,       
    IdentityPercent=d.Value.ToString(), 
    c.PrId, 
    c.SpotNo 
} 

,但我得到了以下錯誤

除了Contains()運算符之外,本地序列不能用於查詢運算符的LINQ to SQL實現。

回答

0

這幾乎說明了一切。除非使用Contains,否則不能在LINQ to SQL查詢中使用字典。

解決方案:

(from c in db.Exp where lstUniprotDic.Keys.Contains(c.UniID) select c).AsEnumerable() 
join d in lstUniprotDic on c.UniID equals d.Key 
select new 
{    
    c.UniID,       
    IdentityPercent=d.Value.ToString(), 
    c.PrId, 
    c.SpotNo 
} 

我不知道如果lstUniprotDic.Keys在LINQ to SQL查詢的使用正在工作。
如果沒有,請嘗試使用此代碼來代替:

var ids = lstUniprotDic.Keys.ToArray(); 
(from c in db.Exp where ids.Contains(c.UniID) select c).AsEnumerable() 
join d in lstUniprotDic on c.UniID equals d.Key 
select new 
{    
    c.UniID,       
    IdentityPercent=d.Value.ToString(), 
    c.PrId, 
    c.SpotNo 
} 
+0

對不起丹尼爾,但它產生的你開始'code'另一個錯誤(從'code'與'code'結束).AsEnumerable()'code', VS說查詢必須發送結束選擇短語。 – user3616494

+0

@ user3616494:我理解你的評論,儘管它很奇怪。請參閱固定版本。 –