Kei*_*ers 2 c# linq fluent-nhibernate
我已经分配了一个使用NHibernate的新项目.我可以在sql中轻松编写的查询让我完全难以理解如何在linq中执行此操作,这就是我被告知要执行此操作的方式.
所以,这是查询:
select ts.BatchID, COUNT(distinct ts.UniqID) SurveyCount
from TeleformStaging.TeleformStaging ts
where ts.IsRescan = 0
and not exists (select bfr.BatchID
from TeleformStaging.BatchesForRescan bfr
where bfr.BatchTrack = ts.BatchID)
group by ts.BatchID
order by ts.BatchID
Run Code Online (Sandbox Code Playgroud)
我相信我可以得到'分组'部分,但不知道子查询.
谢谢你的任何建议......
也许是这样的:
var result= (
from ts in db.TeleformStaging
where ts.IsRescan == false //if is a boolean else == 0
&&
!(
from bfr in db.BatchesForRescan
select bfr.BatchTrack
).Contains(ts.BatchID)
orderby ts.BatchID
group ts by ts.BatchID into g
select new
{
BatchID=g.Key,
SurveyCount=g.Select (x =>x.UniqID).Distinct().Count()
}
);
Run Code Online (Sandbox Code Playgroud)
其中db是linq数据上下文
编辑
你也可以这样做.Any().像这样:
var result= (
from ts in db.TeleformStaging
where ts.IsRescan == false //if is a boolean else == 0
&&
!(
from bfr in db.BatchesForRescan
where ts.BatchID==bfr.BatchTrack
select bfr.BatchTrack
).Any()
orderby ts.BatchID
group ts by ts.BatchID into g
select new
{
BatchID=g.Key,
SurveyCount=g.Select (x =>x.UniqID).Distinct().Count()
}
);
Run Code Online (Sandbox Code Playgroud)
编辑1
有用的链接:
| 归档时间: |
|
| 查看次数: |
1741 次 |
| 最近记录: |