2016-11-26 80 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