2010-01-14 73 views
0

我正在C#中創建一個自定義報告應用程序,並需要聚合一些數據。使用SQL或Linq數據綁定

讓我們簡單點。假設我一年有10,000個銷售額,我需要一種通用的方法來按照說,月,日或小時來分類數據。因此,每個垃圾箱將在該時期內對所有銷售進行總計。

有沒有人在SQL或Linq中寫過這樣的查詢?

+0

通過的「bin」,你是指小組嗎? (懺悔;我幾乎將標題編輯爲「數據綁定...」; p) – 2010-01-14 12:44:05

+0

我*編輯了標題爲「數據綁定...」。對不起... – M4N 2010-01-14 12:46:58

+0

等一下?這不是關於數據綁定?什麼是數據分類? – 2010-01-14 12:52:52

回答

0

傳統,那就是:

(from s in Sales 
where s.SalesDate.Year = 2009 
&& s.SalesDate.Month = 2 
select s.Amount).Sum(); 

現在,您可以進行靈活的,如:

.. GetData(TimePeriod period) 
{ 
return (from s in Sales 
    where 
    (
    //timeframe is enum of month, day, hour 
    period.TimeFrame == TimeFrame.Month 
    && s.SalesDate.Year == period.year 
    && s.SalesDate.Month == period.Month 
) 
    || 
    (
    period.TimeFrame == TimeFrame.Day 
    && s.SalesDate.Year == period.Year 
    && s.SalesDate.Month == period.Month 
    && s.SalesDate.Day == period.Day 
) 
    || 
    (
    .. 
) 
    select s); 

} 

我不知道的是你是否可以使用一個枚舉的唯一的事評價;您可以添加布爾每個條件:

bool isMonth = (period.TimeFrame == Timeframe.Month); 

,並讓您使用isMonth & &,而不是period.TimeFrame == Timeframe.Month改變查詢。

這就像您可以得到的一樣靈活。唯一的其他方式,更加靈活的方式是通過每個記錄的彙總數據手動循環,並創建一個通用的方法...

希望所有有道理:-)

+0

是的,我在同一時間做了類似的事情 – 2010-01-14 13:52:01

相關問題