5列のDataTableがあります。
DataTableには5行が含まれています。
ラベルコントロールの金額列の合計を「合計金額」として表示するにはどうすればよいですか?
DataTableの列の合計を計算するには、 DataTable.Compute メソッドを使用します。
リンクされたMSDN記事の使用例:
DataTable table = dataSet.Tables["YourTableName"];
// Declare an object variable.
object sumObject;
sumObject = table.Compute("Sum(Amount)", string.Empty);
結果を合計金額ラベルに次のように表示します。
lblTotalAmount.Text = sumObject.ToString();
this.LabelControl.Text = datatable.AsEnumerable()
.Sum(x => x.Field<int>("Amount"))
.ToString();
結果をフィルタリングする場合:
this.LabelControl.Text = datatable.AsEnumerable()
.Where(y => y.Field<string>("SomeCol") != "foo")
.Sum(x => x.Field<int>("MyColumn") )
.ToString();
好きなことができます。
DataRow[] dr = dtbl.Select("SUM(Amount)");
txtTotalAmount.Text = Convert.ToString(dr[0]);
ADO.Net DataTableがあれば、できること
int sum = 0;
foreach(DataRow dr in dataTable.Rows)
{
sum += Convert.ToInt32(dr["Amount"]);
}
データベーステーブルをクエリする場合は、使用できます
Select Sum(Amount) From DataTable
Datatableの列の合計を計算し、100%動作します
lbl_TotaAmt.Text = MyDataTable.Compute("Sum(BalAmt)", "").ToString();
条件が必要な場合は、次のように使用します
lbl_TotaAmt.Text = MyDataTable.Compute("Sum(BalAmt)", "srno=1 or srno in(1,2)").ToString();
public decimal Total()
{
decimal decTotal=(datagridview1.DataSource as DataTable).Compute("Sum(FieldName)","");
return decTotal;
}
名前のグループ化によりLinqを使用できます
var allEntries = from r in dt.AsEnumerable()
select r["Amount"];
名前空間using System.Linq;
を使用
Myblog のc#を使用して、datatableでサンプルの合計、小計、総計を見つけることができます。
これは解決すると思う
using System.Linq;
(datagridview1.DataSource as DataTable).AsEnumerable().Sum(c => c.Field<double>("valor"))
これを試して
int sum = 0;
foreach (DataRow dr in dt.Rows)
{
dynamic value = dr[index].ToString();
if (!string.IsNullOrEmpty(value))
{
sum += Convert.ToInt32(value);
}
}