我一直在努力解决这个Linq查询...... 我有以下2个表格: 1)EmailRunHeaders - 包含列:Id,EmailRunId,EmailId 2)EmailTrackers - 包含列:Id,EmailId
每天都会发送一批电子邮件。一个独特的" EmailRunId"分配给一批/一组电子邮件,并为每封电子邮件分配一个" EmailId"。然后将此信息存储在" EMailHeaders"表。 因此,表格中的每个emailId都是唯一的,但EmailRunId将不止一次出现..因为每个"批次"或者跑。
当打开电子邮件时,使用HTTP处理程序,打开电子邮件记录在EmailTracker表中......然后存储特定的EmailId。由于电子邮件可以多次打开,因此可能会在此表格中多次出现EmailId。
对于每次电子邮件运行,我都需要打开的电子邮件总数,而不会重复打开多次电子邮件。
这是我到目前为止所拥有的。嵌套查询工作正常..返回为每次运行打开的电子邮件总数,但前提是每次运行至少打开1个。 然后我尝试将其包装在另一个连接中以从标题表中返回所有不同的EmailRunIds ..但这就是我被困住的地方..我不知道如何从#34; ah1"中获取EmailRunId。
from arh1 in EmailRunHeaders.Select(x => x.EmailRunID).Distinct()
join eo in
(from et in EmailTrackers
join arh2 in EmailRunHeaders
on et.EmailId equals arh2.EmailID.ToString() into j1
from j2 in j1.DefaultIfEmpty()
group j2 by j2.EmailRunID
into g
select new {runId = g.Key, count = g.Count()})
on arh1 equals eo.runId into tg
from tg2 in tg.DefaultIfEmpty()
select tg2