与表

2015-10-05 47 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:我理解你的评论,尽管它很奇怪。请参阅固定版本。 –