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",正如预期的那样,或者至少是想要的.我究竟做错了什么?
你可以这样做:
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.Year和r.Date.Month可转换为SQL.