0
我有campaigns
和campaign stats
之間的一對多關係。一個廣告系列統計信息項最多可以在一天內的廣告系列數據庫中有一個條目。如何查詢日期不存在的項目
因此,從13年9月20日開始 - DateTime.Now
得到campaigns
那裏沒有相關campaign stat
,但我也想獲得的實際日期的統計是從
失蹤,我想展示例如campaign name
,stat date
(即丟失)。我很難想出解決方案,但我已經編寫了這個代碼來開始。
var fromDate = new DateTime(2013, 9, 20);
var toDate = DateTime.Now;
var dates = Enumerable.Range(0, toDate.Subtract(fromDate).Days + 1)
.Select(d => fromDate.AddDays(d));
var a = from c in _db.Campaigns
join s in _db.CampaignStats on c.Id equals s.CampaignId into s1
from s in s1.DefaultIfEmpty()
where s == null
select new {c, s};
樣本輸出是: (運動1對二零一三年九月二十日和2013年9月22日統計)
`Campaign 1 9/21/2013`
`Campaign 1 9/23/2013`
`Campaign 1 9/24/2013`
`...`
編輯
使用我形成Bob的答案此LINQ查詢:
(from counts in
(from cal in _db.CalendarMonths
from c in _db.Campaigns
let statCount = (from s in _db.CampaignStats
where s.CampaignId == c.Id
where s.Date == cal.date
group s by s.Id into s1
select s1.Count()).FirstOrDefault()
select new
{
cal.date,
c.Id,
statCount
})
where counts.statCount == 0
select new
{
counts.Id,
counts.date,
});