2011-11-22 55 views
1

我想看看他們是否有任何可能的方式來結合數據源值。數據的結構是一樣的,結合數據源值asp.net

Year| Amount Used| Amount Collected | Amount Saved 

我想要做這樣它結合是IQueryable<T>數據類型T個數據源什麼是相同類型,這將是這個結構,然後將其綁定到一個gridview 。

只有列我不想加在一起是一年,因爲我想根據年份來源合併,並且每年也可能不在數據源中。

這怎麼可能,唯一的方法是爲每個源創建一個foreach語句並手動合併它們?

我在尋找的東西simplier

+0

這些數據表? – JonH

+0

其linq數據集 – Jake

+0

請看看我的答案,您將需要'合併'數據。 – JonH

回答

1

使用LINQ的聯合運營兩個IQueryable的數據類型組合。我會用union操作的結果創建一個新的變量。從那裏逐個分組,並使用一個聚合函數(總和可能是你正在尋找的)來執行計算。

編輯:這裏是一個例子。我會告訴你我正在學習LINQ,並且有很多教程(Google是你的朋友)。我一直在學習VB中的LINQ,它與C#有一些不同的語法。我盡我所能在C#中編寫示例,但它可能不完全正確,但會給您一個很好的起點。

var unionResult = dataSet1.Union(dataSet2); 

var groupedResult = from r in unionResult 
     group r By r.Year into g 
     Select new 
     { 
      Year = g.Key.Year, 
      TotalUsed = g.Sum(r => r.AmountUsed), 
      TotalCollected = g.Sum(r => r.AmountCollected), 
      TotalSaved = g.Sum(r => r.AmountSaved 
     }; 

如果你正在使用LINQ到數據集的第一行可能需要與被替換:

var unionResult = dataSet1.AsEnumerable().Union(dataSet2.AsEnumerable()); 

這裏有一些我一直在使用的資源(谷歌以外)的。 Scott Gu的blog(在右側點擊LINQ標籤)。 4 Guys也有很好的多部分系列。

+0

你能舉一個例子嗎? – Jake

+0

不知道這種方法是否可行,但我最終使用foreach語句來完成,最糟糕的可能是n^2,n是源中的記錄數,因爲n從不大於30,它們是沒有真正的傷害 – Jake