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)モデルを作成しました。これらの2つのモデル(テーブル)を参照するdbcontextクラスもあります。私のコントローラーでは、このクエリの結果をビューに渡す必要があります。

まず、このレコードセットのモデルを作成する必要がありますか?はいの場合、Name、VisitDate、およびNumOfVisitsという3つのメンバーを持つREPORTという名前のモデルを作成しますか?

その場合、このクエリの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の3つのメンバーを持つ匿名型です。このために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 に答える