Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用linq的子查询_Sql_Linq - Fatal编程技术网

Sql 使用linq的子查询

Sql 使用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

我想使用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();

你们有谁能帮我吗?

不清楚为什么开始将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:你应该看看查询级别上发生了什么。尝试添加日志记录,这样你就可以看到正在执行的查询。