Sql 使用linq的子查询
我想使用linq执行子查询,但它不起作用:-(我在谷歌上搜索过答案,但我不知道如何解决这个问题 这是我的sqlSql 使用linq的子查询,sql,linq,Sql,Linq,我想使用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
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();
你们有谁能帮我吗?不清楚为什么开始将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
};
将最大值查询为临时变量,然后在最后的查询中使用它。var Query=从maxContext.pwdata中的i中使用,其中i.IID==(maxContext.pwdata.where(b=>b.ident==i.ident.max(b=>b.IID))orderby i.ident选择新的比较部件{PartNumber=i.ident,PartName=i.ben1}@Jocelyn:好吧,这并没有给我们更多关于错误的信息。没有更多的信息我就无能为力。如果你要展示更多的代码,我建议你编辑你的问题-注释不适合展示代码。我的查询没有条目=>为空我总是会收到超时错误…:-(你确定linq查询是正确的吗?@Jocelyn:你应该看看查询级别上发生了什么。尝试添加日志记录,这样你就可以看到正在执行的查询。