2016-11-26 15 views
0

私はcshtmlのウェブサイトをやっているので、データベースとforeachから各行の積をどのように集計するかわかりません!C#合計額Foreachから

var db = Database.Open("TestDB"); 
var getData = "SELECT * FROM Test"; 

、その後

@foreach (var get in db.Query(getData)) { 
    <a>@get.kg</a> 
    <a>@get.set</a> 
    <a>@get.rep</a> 
    //So this row gives me the product of each row in the database 
    @(get.kg * get.set * get.rep)    
    <br> 
} 

しかし、私はその後、大きな合計すべての合計を合計したいです!それをする方法を知らない!

答えて

2

マイCSHTMLは少し錆びですが、私はこれがあなたのためのピンチでトリックを行うだろうと思う:

@{ var sumTotalWeight = 0 } 
@foreach (var get in db.Query(getData)) { 
    <a>@get.kg</a> 
    <a>@get.set</a> 
    <a>@get.rep</a> 
    @{ 
     var totalWeight = @get.kg * @get.set * @get.rep; 
     sumTotalWeight += totalWeight 
    } 
    <br> 
} 

@sumTotalWeight 

本当にこのかかわらを処理するためのより良い方法は、あなたのコード内であなたの計算と数学を行うことです背後にあるとViewBagに値を入れて - これはあなたのUIコードクリーナーを保つ:あなたのcshtmlで次に

var query = @"SELECT kg, set, rep, kg*set*rep as 'total' FROM Test"; 
using (var db = Database.Open("TestDB")) 
{ 
    // .ToArray() to materialize the query; 
    ViewBag.Items = db.Query(query).ToArray(); 
    // you might need to cast to ints (i'm not sure) 
    ViewBag.SumTotal = ViewBag.Items.Sum(i => (i.total)); 
} 

@foreach (var item in ViewBag.Items) { 
    <a>@item.kg</a> 
    <a>@item.set</a> 
    <a>@item.rep</a> 
    @item.total    
    <br> 
} 
Total: @ViewBag.SumTotal 
+0

私は両方とも成功しなかった。 –

+0

2番目の優れた代替案は実際には機能しませんでしたが、ViewBagという名前は現在のコンテキストに存在しません。この行を参照してください: ViewBag.Items = db.Query(クエリ).ToArray(); –

+0

「成功なしに起こった」と言うときに何が起こっているかを詳しく説明できますか?また、質問を編集してコントローラを組み込むこともできます。 ViewBagはControllerBaseの一部です。コントローラにないこのコードを実行しない限り、なぜそれが失われるのかはっきりしていません。 – Prescott

関連する問題