0

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

你们中的任何人都可以帮助我吗?

4

1 回答 1

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
            };
于 2013-03-12T13:01:01.537 回答