2015-11-05 82 views
0

我有一個DataGrid中的Amounts列,我需要在一個TextBox中進行求和和顯示。我試圖循環遍歷DataGrid行,但找不到這樣做的正確語法。 DataGrid綁定到基於TransactionModelIEnumerable。這是代碼;總結一個DataGrid列

TransactionModel

public class TransactionModel 
{ 
    public int TransactionID { get; set; } 
    public string TransactionText { get; set; } 
    public int TransactionAmount { get; set; } 
    public DateTime TransactionDate { get; set; } 
    public string TransactionMonth { get; set; } 
} 

XAML結合爲了數據網格

<DataGrid x:Name="dataGrid" Margin="5" AutoGenerateColumns="False" HeadersVisibility="Column" SelectionMode="Single" CanUserAddRows="False" CanUserDeleteRows="False" FontSize="20"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Transaction" Width="*" Binding="{Binding TransactionText}"/> 
      <DataGridTextColumn Header="Transaction Amount" Width="*" Binding="{Binding TransactionAmount}"/> 
      <DataGridTextColumn Header="Transaction Date" Width="*" Binding="{Binding TransactionDate}"/> 
      <DataGridTextColumn Header="Transaction Month" Width="*" Binding="{Binding TransactionMonth}"/> 
     </DataGrid.Columns> 
    </DataGrid> 

填充TransactionModel

public IEnumerable<TransactionModel> GetTransactionList() 
    { 
     string constr = ConfigurationManager.ConnectionStrings["sqlString"].ConnectionString; 
     using (var sqlCon = new MySqlConnection(constr)) 
     { 
      sqlCon.Open(); 
      using (var myQuery = sqlCon.CreateCommand()) 
      { 
       myQuery.CommandText = "SELECT id, text, amount, date, month FROM financesystem.transactions ORDER BY id"; 
       using (var myReader = myQuery.ExecuteReader()) 
       { 
        var transactionList = new List<TransactionModel>(); 
        while (myReader.Read()) 
        { 
         var details = new TransactionModel 
         { 
          TransactionID = Convert.ToInt32(myReader[0]), 
          TransactionText = myReader[1].ToString(), 
          TransactionAmount = Convert.ToInt32(myReader[2]), 
          TransactionDate = Convert.ToDateTime(myReader[3], System.Globalization.CultureInfo.CurrentCulture), 
          TransactionMonth = myReader[4].ToString(), 
         }; 
         transactionList.Add(details); 
        } 
        return transactionList; 
       } 
      } 
     } 
    } 

我將如何循環顯示在DataGrid中的值並將它們相加以顯示在TextBox

+0

您可以使用自IEnumerable返回來計算的總和?如果是這樣的LINQ:「int amountSum = GetTransactionList()。Sum(model => model.TransactionAmount)'' –

+0

@MarcoFatica完美,如果你發佈作爲答案我可以接受。 – CBreeze

回答

1

您可以使用IEnumerable的返回值來計算總和嗎?如果是這樣的易於使用LINQ:

int amountSum = GetTransactionList().Sum(model => model.TransactionAmount)