如何通过 linq to sql 中的子查询检查组中是否存在记录

How to check record exists in group by subquery in linq to sql

我想通过 Linq 中的记录获取组中存在哪些记录的结果。 我在 SQL 中得到了查询,但在 LINQ

中很难得到它

在SQL查询中

 select LEVEL, DESCR
   from ACTIVITY_LKUP 
   WHERE LEVEL IN ( //Checking row exists
    select TOP 2 b.LEVEL
    from ACTIVITY_LKUP b
    WHERE b.LEVEL > (
    select max(b.LEVEL)
    from ACTIVITY a, ACTIVITY_LKUP b
    WHERE b.TYPE = a.ACTIVITY_TYPE
    and a.JOB_CANDIDATE_ID = 1
   )
  group by b.level //Grouping here
  )
order by LEVEL 

在 Linq 查询中

 var duplicate =(from lkup in ACTIVITY_LKUP
                where lkup.LEVEL== (from actlk in ACTIVITY_LKUP //Iam Not able to check row exists in  the group by
                where actlk.LEVEL >
                (
                 from act in ACTIVITY
                 join lkup in ACTIVITY_LKUP on act.ACTIVITY_TYPE equals lkup.TYPE
                 where act.JOB_CANDIDATE_ID == 1
                 orderby lkup.LEVEL
                 select lkup.LEVEL
                 ).First()            
                group actlk by actlk.LEVEL into lggrp
                select new { LEVEL = lggrp.Key,DESCR=lggrp.Select(x=>x.DESCR)              
              }).Take(2)
             select lkup)

显示错误行 "Operator '==' cannot be applied to operands of type 'int?' and 'System.Linq.IQueryable"。

我们如何在 LINQ 中做到这一点?任何人都可以帮助我。

您也可以尝试在查询中连接相等的列,例如

var duplicate=(from lg in reslandentity.ACTIVITY_LKUP
               join grp in
                  (from actlk in reslandentity.ACTIVITY_LKUP
                    where actlk.LEVEL >
                     (
                       from act in reslandentity.ACTIVITY
                       join lkup in reslandentity.ACTIVITY_LKUP on act.ACTIVITY_TYPE equals lkup.TYPE
                       where act.JOB_CANDIDATE_ID == 1
                       orderby lkup.LEVEL
                       select lkup.LEVEL
                     ).FirstOrDefault()
                      orderby actlk.LEVEL
                      group actlk by actlk.LEVEL into lggrp
                      select new { LEVEL = lggrp.Key }).Take(2) 
                 on lg.LEVEL equals grp.LEVEL
                 select lg).ToList();

希望对你有帮助..!!