You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET MVC视图中计算并显示每日食物总热量?

实现每日总热量统计的方法

很容易搞定这个需求,既然你已经通过GroupBy按周几完成了分组,只需要在每组的食物列表循环结束后,计算该组所有食物的热量总和并展示即可。

修改后的完整代码

@model Database.MealPlanner 
@{ ViewBag.Title = "Details"; } 

<div> 
    <h4>Aliments</h4> 
    <hr /> 
    <ul> 
        @foreach (var weekDay in @Model.MealPlannerAliments.GroupBy(q => q.WeekDay).ToList()) 
        { 
            <li class="custom-list-heading list-unstyled"><b>@weekDay.Key</b></li> 
            foreach (var item in weekDay) 
            { 
                <li id="alimentsByDay"> 
                    <div> 
                        <p>@item.Aliment.Name (Calories: @item.Aliment.NutritionalValue.Calories )</p> 
                    </div> 
                </li> 
            }
            <!-- 新增:显示当日总热量 -->
            <li class="total-calories">
                <p><i>Total Number of Calories/@weekDay.Key : @weekDay.Sum(item => item.Aliment.NutritionalValue.Calories)</i></p>
            </li>
        } 
    </ul> 
</div>

关键说明

  • 利用LINQ的Sum方法,直接对当前分组weekDay中的所有食物项计算热量总和:weekDay.Sum(item => item.Aliment.NutritionalValue.Calories)
  • 可以给总热量的<li>添加自定义类(比如示例中的total-calories),方便通过CSS设置样式(比如加粗、改变文字颜色)让它更醒目

额外建议(避免空引用异常)

如果NutritionalValue可能为null,建议使用空条件运算符?.搭配空合并运算符??避免运行时错误,修改求和代码为:

@weekDay.Sum(item => item.Aliment.NutritionalValue?.Calories ?? 0)

这里的?? 0表示如果NutritionalValue为null,就用0代替参与计算,防止抛出NullReferenceException。

内容的提问来源于stack exchange,提问作者Andre.A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:56:12