我想通过 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)
显示错误行“运算符‘==’不能应用于‘int?’类型的操作数?”和“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();
希望对你有帮助..!
关于c# - 如何通过linq to sql中的子查询检查组中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29749635/