日期:2014-05-18  浏览次数:21048 次

C# linq 日期统计查询问题
数据库 表有datetime 字段

dtime
2010.1.2
2010.2.3
2010.3.4
2010.3.5
2011.5.5
2011.5.7
2011.6.1


要求统计结果

2010 年 4
  1 月 1
  2 月 1
  3 月 2
2011 年 3
  5 月 2
  6 月 1

求 linq 查询统计 语句 


------解决方案--------------------
C# code

            var query = from p in DB.你的表
                              group p by p.时间.Value.Year into g
                              select new { g.Key ,count = g.Count()};

------解决方案--------------------
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("datetime", typeof(DateTime));
dt.Rows.Add("2010.1.2");
dt.Rows.Add("2010.2.3");
dt.Rows.Add("2010.3.4");
dt.Rows.Add("2010.3.5");
dt.Rows.Add("2011.5.5");
dt.Rows.Add("2011.5.7");
dt.Rows.Add("2011.6.1");
var source= dt.AsEnumerable().GroupBy(t => t.Field<DateTime>("datetime").ToString("D").Substring(0, 5));
foreach (var s in source)
{
Console.WriteLine(s.Key+" "+s.Count());
foreach(var temp in s)
{
Console.WriteLine(temp.Field<DateTime>("datetime").Month+"月"+temp.Field<DateTime>("datetime").Day+"日");
}
}
Console.ReadLine();
}
------解决方案--------------------
C# code

            DataTable dtime = new DataTable();
            dtime.Columns.Add("dtime", typeof(DateTime));
            dtime.Rows.Add("2010.1.2");
            dtime.Rows.Add("2010.2.3");
            dtime.Rows.Add("2010.3.4");
            dtime.Rows.Add("2010.3.5");
            dtime.Rows.Add("2011.5.5");
            dtime.Rows.Add("2011.5.7");
            dtime.Rows.Add("2011.6.1");
            var datequery = from td in dtime.AsEnumerable()
                            group td by td.Field<DateTime>("dtime").Year into g
                            select g;
            foreach (var sk in datequery)
            {
                Console.WriteLine(sk.Key + " 年 " + sk.Count());
                foreach (var sk1 in sk.GroupBy(m => m.Field<DateTime>("dtime").Month))
                {
                    Console.WriteLine(sk1.Key + " 月 " + sk1.Count());
                }
            }
/*
2010 年 4
  1 月 1
  2 月 1
  3 月 2
2011 年 3
  5 月 2
  6 月 1
*/

------解决方案--------------------
C# code

            DataTable dt = new DataTable("test");
            dt.Columns.Add(new DataColumn("dtime", typeof(DateTime)));
            dt.Rows.Add("2010.1.2");
            dt.Rows.Add("2010.2.3");
            dt.Rows.Add("2010.3.4");
            dt.Rows.Add("2010.3.5");
            dt.Rows.Add("2011.5.5");
            dt.Rows.Add("2011.5.7");
            dt.Rows.Add("2011.6.1");

            var group1 = dt.AsEnumerable().GroupBy(r => r.Field<DateTime>("dtime").Year);
            foreach (var g in group1)
            {
                Console.WriteLine("{0}年 {1}", g.Key, g.Count());
                var group2 = g.GroupBy(r => r.Field<DateTime>("dtime").Month);
                foreach (var g2 in group2)
                {
                    C