簡體   English   中英

c#實體框架3.5中的Pivot

[英]Pivot in c# entity framework 3.5

ISO Code description    Year    value
CAD Canadian Dollar     2009    1.3001
CAD Canadian Dollar     2010    1.3001
CAD Canadian Dollar     2011    0.0001
EUR Euro                2009    1.0000
EUR Euro                2010    1.0000
EUR Euro                2011    0.0001
USD US Dollar           2009    1.2300
USD US Dollar           2010    1.2300
USD US Dollar           2011    0.0001

表格1

ISO Code    description 2009    2010    2011
CAD Canadian Dollar     1.3001  1.3001  0.0001
EUR Euro                1.0000  1.0000  0.0001
USD US Dollar           1.2300  1.2300  0.0001

表 2

如果年數是動態的,如何使用c#中的linq將表1轉換為表2(不固定為2009、2010、2011,可以在后面添加值2012、2013等)

課程如下

class Currency
 {
    public string ISO Code { get; set; }
    public string Description { get; set; }
 }
class Rate
{        
    public string ISO Code { get; set; }
    public int Year { get; set; }
    public inr Value { get; set; }

}

最后,我必須將結果綁定到 gridview。 有人可以幫忙嗎

我認為這不能在 Linq 中完成。 Linq 適用於強類型對象,因此您的結果必須是強類型的,但您說這不可能,因為隨着時間的推移可以添加其他列(.NET 3.5 中沒有動態行為)。

您必須在 memory 中查詢非透視數據並計算透視值並將它們傳遞給DataTable或者您必須使用PIVOT命令調用本機 SQL 並將結果傳遞給您的網格服務器和新的 SQL Server

這是 SQL 服務器報告服務及其 Matrix (SSRS 2005) 或 Tablix (SSRS 2008) 的典型場景。

編輯:

你真的需要真正的 pivot 嗎? 您的“透視”表中沒有計算。 看起來你只需要這個查詢:

var query = from c in ctx.Currencies.Include("Rates");

並在為網格視圖准備數據源時轉置Rates

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM