如何通过 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();
希望对你有帮助..!!
我想通过 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();
希望对你有帮助..!!