2012-11-06 88 views
0

我有一個tableadapter(SettlementCurrentTableAdapter)與關係。父表是(SettlementCurrent)子表是(Trips)。tableadapter的SUM子列

我需要彙總(Trips)中的每一行(tripLoadedMiles)並在標籤中顯示總數(labelWelcomeSetTotalMiles)。

我想在代碼中執行此操作,而不是sql,因爲我使用此tableadapter來顯示其他標籤。

有人可以幫我解決這個問題。我是C#的新手,我使用Visual C#。

 this.settlementCurrentTableAdapter.Fill(this.myLeaseDataSet.SettlementCurrent); 
     MyLeaseDataSet.SettlementCurrentRow settlementCurrent; 
     settlementCurrent = myLeaseDataSet.SettlementCurrent.Last(); 

     var settlementCurrentID = settlementCurrent.setID; 

     this.tripsTableAdapter.FillByTripSetID(this.myLeaseDataSet.Trips, settlementCurrentID); 
     MyLeaseDataSet.TripsDataTable settlementTrips; 
     settlementTrips = myLeaseDataSet.Trips; 
     foreach (DataRow row in myLeaseDataSet.Trips.Rows) 
     { 

      NOT SURE ON THE CODE HERE 

     } 

回答

0

您的第一步是從數據適配器中提取您想要的數據。由於我的問題中沒有表格模型,因此最好查看MSDN上的table adapter overview,然後單擊相關鏈接和文章以找出此對象的基本用法。如果你要發佈你的表結構,理論上我可以給你一些代碼,但是我不願意這樣做 - 你必須用這個對象處理很多這個對象,所以你要和你的數據庫交談,所以你必須瞭解它的功能。

你在這個學習中的目標是弄清楚如何從你的表適配器中獲得所有的英里數字。通常,通過一次遍歷一行來完成此操作,並選擇要將它們添加到更多C#慣用數據結構的值,例如List/IEnumerableArray

在您擁有其中一種結構所需的數據後,您可以使用LINQ獲取所有內容的總和。根據你多少拉出,它可以作爲一個調用一樣簡單(如果這是類似的intsArray):

var totalMiles = tripLoadedMiles.Sum(); 

或者作爲精心爲您可能需要(如果這是一個一List同時具有SettlementCurrentIdMiles自定義對象,無論是存儲爲int S):

var totalMiles = tripLoadedMiles.Select(x => x.SettlementCurrentId == someRandomRequiredSettlement).Sum(y => y.Miles); 

在你使用的東西的方式,這是你打算如何在這種情況下,它總計。

var total = 0; 
    foreach (DataRow row in myLeaseDataSet.Trips.Rows) 
    { 

     total += int.Parse(row["tripTotalMiles"].ToString()); 
    } 
    // Use the total 
+0

確定添加了代碼。然而,我完全困惑,我敢肯定即時通訊的一切都是錯誤的。我一直在閱讀msdn,但它似乎只是更多地淹沒我 – user1804465

+0

@ user1804465你甚至沒有從你的數據適配器中獲取任何東西。如果你沒有任何功能,我放在那裏的代碼絕對不會起作用。我用更多的資源更新了我的答案,以供您查看 - 不過,因爲我不知道您的基礎表結構是什麼樣子,*您必須自己弄清楚這一點。* – tmesser

+0

也許即時通訊正確的道路。填充(SettlementCurrent)表格適配器。然後通過(setID)填充(旅行)表格適配器。我找不到我在(myLeaseDataSet.Trips.SOMETHING();)中使用的內容 – user1804465