使用dateTime从MVC模型获取与LINQ相同的行数,是否可能?

Chr*_*rén 0 c# sql linq asp.net-mvc-4

我需要知道表中有多少行具有相同的月份,而我不知道该怎么做.我以为我会尝试一些LINQ,但我以前从未使用它,所以我甚至不知道它是否可能.请帮帮我!

        public ActionResult returTest()
        {
            ViewData["RowsWithSameMonth"] = // I'm guessing I can put some LINQ here?

            var returer = from s in db2.ReturerDB select s;
            return View(returer.ToList());
        }
Run Code Online (Sandbox Code Playgroud)

理想的是获得,可能是一个二维数组,第一个单元格中的月份和第二个单元格中的行数量?

我希望结果有点像:

    string[,] statistics = new string[,]
{
    {"2013-11", "5"},
    {"2013-12", "10"},
    {"2014-01", "3"}
};
Run Code Online (Sandbox Code Playgroud)

这可行吗?或者我应该只查询数据库并做很多事情?我想我可以自己解决这个问题,但这意味着很多丑陋的代码.背景:在IT公司自学C#开发人员,有1年丑陋的编码经验,没有任何官方学位.

编辑

var returer = from s in db2.ReturerDB select s;

            var dateRange = returer.ToList();

            var groupedData = dateRange.GroupBy(dateRow => dateRow.ToString())
            .OrderBy(monthGroup => monthGroup.Key)
            .Select(monthGroup => new
            {
                Month = monthGroup.Key,
                MountCount = monthGroup.Count()
            });

            string test01 = "";
            string test02 = "";

            foreach (var item in groupedData)
            {
                test01 = item.Month.ToString();
                test02 = item.MountCount.ToString();
            }
Run Code Online (Sandbox Code Playgroud)

在debug中,test01是"Namespace.Models.ReturerDB",test02是"6",正如预期的那样,或者至少是想要的.我究竟做错了什么?

Ger*_*old 5

你可以这样做:

var groupedData = db2.ReturerDB.GroupBy(r => new { r.Date.Year, r.Date.Month })
             .Select(g => new { g.Key.Year, g.Key.Month, Count = g.Count() })
             .OrderBy(x => x.Year).ThenBy(x => x.Month);
             .ToList();
var result = groupedData
             .ToDictionary(g => string.Format("{0}-{1:00}", g.Year, g.Month),
                           g => g.Count);
Run Code Online (Sandbox Code Playgroud)

哪个会给你

Key       Value
---------------
2013-11    5
2013-12   10
2014-01    3
Run Code Online (Sandbox Code Playgroud)

(创建字典比二维数组稍微容易一些)

这将工作对像LINQ到SQL的实体框架SQL后端,因为表情r.Date.Yearr.Date.Month可转换为SQL.