我想用linq做一个子查询,但它不起作用。 :-(我搜索谷歌的答案,但我不知道如何解决问题。
这是我的sql
string strSQL = @"SELECT a.ident, a.ben1
FROM pwdata a
WHERE a.iid = (SELECT max(b.iid) FROM pwdata b WHERE b.ident = a.ident)";
这就是我尝试使用Linq的方式,但这不是正确的方法
var query = from i in maxxContext.pwdata
where i.IID = (SELECT max(b.iid) FROM pwdata b WHERE b.ident = a.ident)
orderby i.ident
select new CompareParts
{
PartNumber = i.ident,
PartName = i.ben1
};
return query.ToList().Distinct();
你们有人可以帮助我吗?
答案 0 :(得分:2)
目前尚不清楚为什么要开始将LINQ与常规SQL混合使用。它不会那样工作。
这应该可行:
var query = from i in maxxContext.pwdata
where i.IID == (pwdata.Where(b => b.ident == i.ident)
.Max(b => b.iid))
orderby i.ident
select new CompareParts
{
PartNumber = i.ident,
PartName = i.ben1
};
或者,您可以进行加入:
var query = from i in maxxContext.pwdata
join b in pwdata on i.ident equals b.ident into bs
where i.IID == bs.Max(b => b.iid)
orderby i.ident
select new CompareParts
{
PartNumber = i.ident,
PartName = i.ben1
};