我有一個父表parentTable,它可能有或沒有孩子在childTable中。我期望得到任何給定的父母子女的平均百分比,以及他們存在的孩子的MAX(到期日期)(日期)。我的SQL是這樣的:Linq查詢有兩個子查詢組合,一個平均,一個最大
SELECT parentRecord_id, assigned_to,
(SELECT avg(complete)
FROM childTable
WHERE parent_id = parentRecord_id
and deleted IS NULL
GROUP BY parent_id),
(SELECT max(due)
FROM childTable
WHERE parent_id = parentRecord_id
and deleted IS NULL
GROUP BY parent_id
)
FROM parentTable s
WHERE s.deleted IS NULL and assigned_to IS NOT NULL
我的結果集爲我提供了正確的平均值和最大值或爲空的行。在這種情況下,我必須做跟進處理,以便我可以忽略空值,如果我通過DataTable行進行foreach。然而,我試圖在Linq中這樣做,並不知道如何避免一個System.InvalidOperationException其中Linq試圖將null轉換爲double。這是我到目前爲止所嘗試的。
var query8 = from s in db.parentTable
where s.deleted == null
select new
{
ID = s.assigned_to,
Average =
((from t in db.childTable
where t.parent_id == s.strategy_id
group t by new { t.parent_id } into g
select new
{
a0 = g.Average(f0 => f0.complete)
}).FirstOrDefault().a0)
};
foreach (var itm in query8)
{
Console.WriteLine(String.Format("User id:{0}, Average: {1}", itm.ID, itm.Average));
}
這是我的問題。如何獲得查詢以處理那些平均完成或最大到期日(date)爲空的返回行?
如果存在空值,它會做什麼正確的事情?例如,如果有值'{1,2,null}',那麼平均值是1.5還是1?或者其他值? – StriplingWarrior