我希望从包含基于公共字段的字典的表中加入查询,我的查询是:
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 :(得分:0)
这几乎说明了一切。除非使用Contains
。
解决方案:
(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
}