我的问题是如何执行左外连接,但在 linqToEF/SQL 中包含基于日期时间字段的缺失值。我试图减少一个巨大的问题来提出我的具体问题。
我有 3 张桌子。在下面画出它们。
- 时间日志 | Id、StartDateTime、AccountNumber、ContractNumber
- 合同 | Id、ContractNumber、AccountNumber、值、StartDateTime、EndDateTime
- 帐户 | Id、AccountNumber、AccountName、Email、FirstName、LastName
我在 linq 中执行一个 group by 是这样的:
group new {contracts, timelogs} by new { accounts.AccountNumber, accounts.AccountName, Year = timelogs.StartDateTime.Year, Month = timelogs.StartDateTime.Month } into g
timelogs 表仅包括使用特定帐户提交一个月的时间日志。如果没有提交时间日志,它不会像我预期的那样输出任何条目。
看这个例子:
帐户“Blah”没有提交第 5 个月的任何时间日志。因此,在下面的示例输出中缺少 Blah 条目。
AccountName | Account Number | Month | Year
Bling 654321 5 2013
Bling 654321 6 2013
Blah 123456 6 2013
Bling 654321 7 2013
Blah 123456 7 2013
Bling 654321 8 2013
Blah 123456 8 2013
我试过这样做,但是由于数组是本地的,这不起作用。
join months in new int[] { 1,2,3,4,5,6,7,8,9,10,11,12 } on timelogs.StartDateTime.Month equals months
join years in new int[] { 2008,2009,2010,2011,2012,2013,2014,2015,2016 } on timelogs.StartDateTime.Year equals months
如何根据 DateTime 字段中缺少的月/年执行 linq 到 SQL/实体框架的连接?我想在第 5 个月包括 Blah,即使它没有任何时间日志。