比如我表A中有DATE字段。我想按月分组,LINQ怎么写?
得到的结果是
2009-04 20
2009-05 15
2009-06 3
以下是SQLselect convert(varchar(7),date,120) as calendar,count(*) as Num from A group by convert(varchar(7),date,120)
得到的结果是
2009-04 20
2009-05 15
2009-06 3
以下是SQLselect convert(varchar(7),date,120) as calendar,count(*) as Num from A group by convert(varchar(7),date,120)
/// 取得根据年月统计的BlogGroup
/// </summary>
/// <returns></returns>
public static Dictionary<string, int> GetCalendarGroup()
{
//得到结果是yyyy-MM Num
// yyyy-MM Num
// yyyy-MM Num
// group中的item.date.ToString().Substring(6, 4) + "-" + item.date.ToString().Substring(0, 2)
// 只是为了实现date.ToString("yyyy-MM"),其结果相同,但后者无法运行,调试显示无法排序 Dictionary<string, int> group = new Dictionary<string, int>();
MyServerDataContext dc = new MyServerDataContext();
var query = from item in dc.Blog
where item.del == false
group item by item.date.ToString().Substring(6, 4) + "-" + item.date.ToString().Substring(0, 2);
foreach (var item in query) group.Add(item.Key, item.Count());
return group;
}
FROM (
SELECT DATEPART(Year, [t0].[ArchiveOutDate]) AS [value], DATEPART(Month, [t0].[ArchiveOutDate]) AS [value2]
FROM [dbo].[Employee] AS [t0]
) AS [t1]
GROUP BY [t1].[value], [t1].[value2]
--------------------------------
var bbb = from ee in pdc.GetTable<EmployeeInfo>()
group ee by new
{
Year = ee.ArchiveOutDate.Value.Year,
Month = ee.ArchiveOutDate.Value.Month
}
into gg
select gg;
group ee by ee.ArchiveOutDate.Value.ToString("yyyy-MM") into gg
select gg;
源错误:
行 215: group item by item.date.ToString("yyyy-MM");
行 216: foreach (var item in query) group.Add(item.Key, item.Count());
group ee by new DateTime
(
ee.ArchiveOutDate.Value.Year,
ee.ArchiveOutDate.Value.Month,
0
) into gg
select gg; foreach的时候再ToString
应该是这个!!