2

我一直在努力处理这个 Linq 查询...我有以下 2 个表:1)EmailRunHeaders - 包含列:Id、EmailRunId、EmailId 2)EmailTrackers - 包含列:Id、EmailId

每天都会发送一批电子邮件。一个唯一的“EmailRunId”被分配给一批/一组电子邮件,每封电子邮件都被分配一个“EmailId”。然后,此信息将存储在“EMailHeaders”表中。因此,表中的每个 emailId 都将是唯一的,但 EmailRunId 将出现不止一次..因为每个“批次”或运行中都有不止一封电子邮件。

当使用 HTTP 处理程序打开电子邮件时,打开记录在 EmailTracker 表中……然后存储特定的 EmailId。由于电子邮件可能会被多次打开,因此 EmailId 可能会在此表中出现多次。

对于每封电子邮件,我需要打开的电子邮件总数,而不是重复计算多次打开的电子邮件。

这就是我到目前为止所拥有的。嵌套查询工作正常..返回每次运行打开的电子邮件总数,但前提是每次运行至少打开 1 封电子邮件。然后我尝试将其包装在另一个连接中以从头表中返回所有不同的 EmailRunIds..但这就是我卡住的地方..我不知道如何从“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
4

0 回答 0