带有linq的子查询

时间:2013-03-12 12:57:37

标签: 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 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();

你们有人可以帮助我吗?

1 个答案:

答案 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
            };