Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql Linq到SQL不同的联接和组_Linq To Sql - Fatal编程技术网

Linq to sql Linq到SQL不同的联接和组

Linq to sql Linq到SQL不同的联接和组,linq-to-sql,Linq To Sql,我一直在努力解决这个Linq问题。。。 我有以下两个表格: 1) EmailRunHeaders-包含以下列:Id、EmailRunId、EmailId 2) EmailTrackers-包含以下列:Id、EmailId 每天都会发送一批电子邮件。为一批/一组电子邮件分配一个唯一的“EmailRunId”,并为每封电子邮件分配一个“EmailId”。然后,此信息存储在“EMailHeaders”表中。 因此,表中的每个emailId都是唯一的,但EmailRunId将出现多次..因为每个“批处理

我一直在努力解决这个Linq问题。。。 我有以下两个表格: 1) EmailRunHeaders-包含以下列:Id、EmailRunId、EmailId 2) EmailTrackers-包含以下列:Id、EmailId

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

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

我需要的电子邮件打开的总数,不重复计算电子邮件打开超过一次,为每个电子邮件运行

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