2016-11-26 83 views
0

因此,我做了一個cshtml網站,我似乎無法弄清楚如何總結數據庫和foreach每行的產品!來自Foreach的C#總值

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代碼更加清晰:

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)); 
} 

然後在您的cshtml

@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

第二個更好的選擇沒有真正的工作,它說名稱ViewBag不存在於當前的情況下!引用此行: ViewBag.Items = db.Query(query).ToArray(); –

+0

當你說「發生沒有成功」時,你能詳細說明發生了什麼嗎?此外,你可以編輯你的問題,包括你的控制器。 ViewBag是ControllerBase的一部分 - 所以我不清楚爲什麼它會丟失,除非你運行這個代碼的地方不在控制器中。 – Prescott