0

我需要一份显示每天唯一身份访问者数量的报告。这是查询:

SELECT User.Name
       ,Visit.VisitDate
       ,COUNT(Visit.Id) AS NumOfVists
FROM Visit JOIN User ON Visit.UserId = User.Id
GROUP BY User.Name, Visit.VisitDate

我使用代码优先创建了 User(table) 模型和 Visit(table) 模型。我也有引用这两个模型(表)的 dbcontext 类。在我的控制器中,我需要将此查询的结果传递到视图中。

首先,我必须创建这个记录集的模型吗?如果是,我是否创建一个名为 say, REPORT 的模型,其中包含名为 Name、VisitDate 和 NumOfVisits 的 3 个成员?

如果是这样的话,这个查询的 LINQ 版本会是什么样子?以及如何将其传递给视图?

4

2 回答 2

1

如果不知道您的确切架构或您希望如何安排结果,很难说,但我认为 LINQ 版本将类似于:

from u in User
from v in u.Visit
group v by new { u.Name, v.VisitDate } into g
select new {g.Key.Name, g.Key.VisitDate, Count = g.Count()};

这将为您提供一个IEnumerable<x>结果,其中x是具有三个成员的匿名类型:字符串、DateTime 和 Int。您不需要为此创建 ViewModel,但如果您愿意,可以:

from u in User
from v in u.Visit
group v by new { u.Name, v.VisitDate } into g
select new MyViewModel
{
    Name = g.Key.Name, 
    VisitDate = g.Key.VisitDate, 
    Count = g.Count()
};
于 2012-05-07T17:46:11.770 回答
0

您可以将查询结果直接传递到视图中。你不需要为它创建任何额外的东西,但如果你愿意,可以。至于如何将其传递给视图使用

return View(your model);
于 2012-05-07T17:43:42.650 回答