使用表

时间:2015-10-05 11:15:02

标签: c# sql sql-server linq dictionary

我希望从包含基于公共字段的字典的表中加入查询,我的查询是:

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实现。

1 个答案:

答案 0 :(得分: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
}

我不确定LINQ to SQL查询中lstUniprotDic.Keys的使用是否真正起作用 如果没有,请尝试使用此代码:

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
}