我正在试图弄清楚如何从获得多个通知的关系中获取所有通知,因为我想将这些通知组合到1个通知中,因此关系只会获得1个电子邮件而不是多个。
我创建了以下SQL语句,据我所知,我想要的是:
select distinct r.Notificatie
, r.RelatieNr
FROM [configuratie].[dbo].[NotificatieRecID] r
join [configuratie].[dbo].[Notificatie] n on r.Notificatie = n.ID
where n.Verzonden = 0
and r.RelatieNr in(select RelatieNr from [configuratie].[dbo].[NotificatieRecID]
group by RelatieNr having count(*) > 1)
order by r.RelatieNr
返回以下内容
Notification Relation
3A2A53B9-D92A-4504-874D-5A901AD01041 114147
4C499F6C-53C8-49E0-B529-8B045819BE10 114147
AF4ED8CB-D033-47A4-96AE-F379BB484532 114147
977885C5-4C12-431B-AB72-59383B1824C6 303327
3A2A53B9-D92A-4504-874D-5A901AD01041 303327
4C499F6C-53C8-49E0-B529-8B045819BE10 303327
AF4ED8CB-D033-47A4-96AE-F379BB484532 303327
稍后在我的c#代码中,我将从不同的通知中获取所有值并简单地将它们组合起来但首先我需要以一种我可以在c#中使用linq的方式编写此SQL语句。
我不知道如何做SELECT DISTINCT
,and r.RelatieNr in
和group by RelatieNr having count(*) > 1
有人能为我提供一个例子吗? (它不一定是1个linq语句,我有点认为这是不可能的,虽然我想要一点点临时列表/ Iqueriables,因为表格很大)
答案 0 :(得分:1)
您可以使用以下
var details= (from r in NotificatieRecID
join n in Notificatie on r.Notificatie=n.ID
where n.Verzonden=0 &&
(from t in NotificatieRecID
group t by t.RelatieNr into grp
where grp.Count()>1
select grp.Key).Contains(r.relatieNr)
select new {
Notificate=r.Notificatie,
RelatieNr=r.RelatieNr
}).Distinct();