MVC计数和Sum多记录集单视图

时间:2014-05-03 23:51:38

标签: asp.net

是否可以在一个函数中返回一个记录集的计数和另一个记录集的总和以在视图中显示?

我还需要最有效的方法,通常如下所示的查询使用为表/类指定的所有字段返回完整的Recorset内容:

var usersModel = from m in db.AspNetUsers where != m.UserName == "Bob" select m;

return View(contentModel);

但我只需要记录集计数,没有其他字段,因为它不能有效地使用SQL。

接下来是再次返回另一个表/类的总和,而不是其他字段只是字段Amount。

这可以在一个功能中完成,并在一个视图中显示两个值吗?

非常感谢任何帮助: - )

2 个答案:

答案 0 :(得分:0)

您可以创建视图模型来保存结果。像这样......

public class MyViewModel
{
    public int UserCount { get; set; }
    public decimal TotalAmount { get; set; }
}

然后使用2个查询填充viewmodel。像这样......

var viewModel = new MyViewModel();
viewModel.UserCount = (from m in db.AspNetUsers where m.UserName == "Bob").Count();
viewModel.TotalAmount = db.Orders.Where(o => o.CustomerName == "Bob").Sum(o => o.Amount);

return View(viewModel);

查看...

@model MyProject.MyViewModel

<div>count = @Model.UserCount</div>
<div>total = @Model.TotalAmount<div>

答案 1 :(得分:0)

最令人头痛的是总和,因为示例提供了一个十进制值,但我的字段实际上是一个Nullable所以无论我使用的是什么linq语法,Visual Studio 2013都不会验证它。

我在下面提供了一个完整的解决方案来解决我最初的问题:

WebApplication1 /型号/ StatisticsModels.cs

public class StatisticsModels
{
    public int UserCount { get; set; }
    public Nullable<decimal> TotalAmount { get; set; }
}

WebApplication1 /控制器/ HomeController.cs

[ChildActionOnly]
public ActionResult Statistics()
{
    var statsModel = new StatisticsModels();
    statsModel.UserCount = (from m in db.AspNetUsers where m.UserName != "bob" select new { m.UserName }).Count();
    statsModel.TotalAmount = db.Orders.Sum(o => o.Amount);
        return View(statsModel);
    }

WebApplication1 /查看/主页/ Statistics.cshtml

@{ Layout = null; }

@model WebApplication1.Models.StatisticsModels

<div>Count = @Model.UserCount</div>
<div>Sum = @Model.TotalAmount</div>

_Layout.cshtml

@{ Html.RenderAction("Statistics", "Home"); }

我希望这对其他人有用: - )