4
我發現了幾篇文章,詳細介紹瞭如何根據外鍵執行加權平均,但是我還沒有找到解決方案來處理我的情況。這是它:C#Linq加權平均值基於日期
我有兩個表,表A和表B多對多表鏈接它們;沒有什麼複雜的:
TableA
{
A_ID,
Other stuff
}
TableB
{
B_ID,
Date
Other stuff
}
LinkAtoB
{
A_ID,
B_ID
}
現在來了數學部分。我或多或少地從表A試圖重結果根據最近協會在表B.數量
所以,如果表A有4個協會表日期如下:
{10/23/2010, //3 days ago
10/19/2010, //5 days ago
10/18/2010, //6 days ago
9/13/2010} //40ish days ago
因此,這裏是如何我想對他們進行排名:
我想提供天近因門檻,我會佔用7天爲例:
因此,使用上面的數據我會分配以下值:
{10/23/2010, //7-3 = 4
10/19/2010, //7-5 = 2
10/18/2010, //7-6 = 1
9/13/2010} //40ish days ago
因此,該特定TableA條目的加權平均值爲7/3 = 2.33333。
這或多或少是我到目前爲止有:
var k = from a in TableA
group a by a.Select(x=>x.LinkAtoB.TableB)
.Where(x=>x.Date.CompareTo(DateTime.Now.AddDays(-7)) >= 0)
into g
select g.Sum(x => DateTime.Now.Subtract(x.Date).Days)/
g.Sum(x => x.Length);
我想我接近,但我知道我有組部分是錯誤的。我認爲其他的東西應該工作。如何修復我的代碼以完成我想要的功能?
GOLDEN!除了一個小編輯外,這完全適用。 .Value在第五行不是必需的。除了那種流暢的航行。 DefaultIfEmpty()部分是殺了我的東西。謝謝。 – Shawn 2010-10-27 08:56:33
對不起,我正在測試一個空的日期。現在刪除。很高興它的作品:) – JumpingJezza 2010-10-27 08:58:46