【问题标题】:C# Sum Value From Foreach来自 Foreach 的 C# 总和值
【发布时间】:2016-11-26 20:40:14
【问题描述】:

所以我在做一个 cshtml 网站,但我似乎无法弄清楚如何将数据库和 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>
}

但是我想把所有的总数加起来一个很大的总数!不知道该怎么做!

【问题讨论】:

    标签: c# sql razor sum


    【解决方案1】:

    我的 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
    

    【讨论】:

    • 第二个更好的选择并没有真正起作用,它说 ViewBag 这个名字在当前上下文中不存在!参考这一行:ViewBag.Items = db.Query(query).ToArray();
    • 当你说“没有成功”时,你能详细说明发生了什么吗?此外,您可以编辑您的问题以包括您的控制器。 ViewBag 是 ControllerBase 的一部分 - 所以我不清楚为什么会丢失它,除非你在控制器之外的某个地方运行此代码。
    • 第一个解决方案做了我在问题代码中所做的事情,它将同一行上的值乘以总计,并对所有行执行此操作,因此每一行都包含一个总和,但是,我想把所有这些总和最后加起来一大笔钱!而且,我没有做 MVC,只是在 cshtml 文件顶部的 html 和 razor,我只是在做一个小型私人网站供自己使用,因为我发现做一个网页比我有知识的 c# 程序更容易,而且我找不到一个好的 mvc 教程,对我来说意义不大!如果你想试一试,我会在下班后更新代码
    • 啊,我做了一个小小的编辑......从循环中删除 @totalWeight - 最后打印的总重量是多少?它会打印出您期望的内容吗?如果您可以粘贴输出然后向我展示更正后的输出应该是什么样子,那将会有所帮助。另外,好的,不了解 ViewBag - 没问题。
    • 现在刚回家测试!工作绝对完美!我已经检查过计算是否正确,这太棒了!我非常感谢您的帮助!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多