2015-11-05 81 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)