0
我創建一個生產儀表板以顯示每個工作中心產生的小部件的數量,間隔爲一小時。在每個小時的過程中,小部件製作都有「觸發器」和「目標」值。我的查詢工作正常......但是如果在那個小時內沒有生成小部件,它不會顯示特定的時間間隔。我試圖在間隔目標表上執行一種左外連接來捕獲所有可能的時間間隔,但一直未能顯示具有零小部件計數的間隔。LINQ左連接count - 多表連接Visual Studio 2015 MVC 5 C#
dbvm.widgetSummary = from wc in db.workCenters
from w in db.widgets.Where(w => w.createdByID == wc.ID && w.packDate >= beginDate && w.packDate <= endDate)
from d in db.departments.Where(d => d.ID == wc.deptID && wc.display == true)
from g in db.goals.Where(g => g.workCenterID == wc.ID && g.hour == w.packDate.Value.Hour)
group g by new { wc.ID, wc.friendlyName, g.hour, g.trigger, g.target, d.dept } into n
select new WidgetSummary()
{
createdByID = n.Key.ID,
friendlyName = n.Key.friendlyName,
hour = n.Key.hour,
actualWidgets = n.Count(),
triggerWidgets = n.Key.trigger,
targetWidgets = n.Key.target,
variance = (n.Count() - n.Key.target),
dept = n.Key.dept
};
return View(dbvm);
有了這個複雜的查詢,我會主張使用直接sql而不是嘗試執行EF或Linq-To-SQL。 – Cameron
這些看起來像內部加入我。當他們離開連接時,我通常會看到'DefaultIfEmpty' –
謝謝 - 我已經嘗試了DefaultIfEmpty()的幾種組合,但都沒有得到所需結果的版本。 – scootsch