【问题标题】:LINQ get the data from the datatable group by hoursLINQ 按小时从数据表组中获取数据
【发布时间】:2015-04-18 05:00:14
【问题描述】:

我有一个包含如下数据的数据表:

name      Code    dateAndTime
ab01     3hdfj3   2012-06-24 14:17:32.833
ab02     57dfdf   2012-07-12 14:08:28.210
ab02     57dfdf   2012-07-12 14:08:28.210
ab02     57dfdf   2012-07-12 15:08:28.210
ab03     57dfdf   2012-07-12 14:08:28.210
ab03     9jdhfj   2012-07-12 15:15:12.007
etc....

现在我想通过 LINQ 从数据表中过滤数据。我想按小时获取记录组的计数。我的一天从 7 点开始,到第二天的 7 点结束。所以,我想按小时分组获取 24 小时的数据。这是第一个条件。

第二个条件是,我希望数据也按代码分组。所以条件变成了这样:

表:

Name     7 OClock  8 O Clock   9 O Clock  etc.....
ab01     56           75          88
ab02     45           45          77
ab03     57           66          67
etc...

在生成的上表中,列应按小时递增组,行应按名称递增组。我得到了当前代码来按小时分组列数。此处为 DataTable 的“dt”

var query = dt.AsEnumerable()
    .GroupBy(row => row.Field<DateTime>("dateAndTime").Hour)
    .Select(grp => new
    {
        Hour = grp.Key,
        Count = grp.Count()
    });

                foreach (var x in query)
                {

                }
            }

我怎样才能达到上述条件?

【问题讨论】:

    标签: c# linq datatable


    【解决方案1】:

    您可以按以下两个条件进行分组:

    var query = dt.AsEnumerable()
        .GroupBy(row => new
                   {
                       Hour = row.Field<DateTime>("dateAndTime").Hour,
                       Code = row.Field<returnTypeOFCodeColumn>("Code")
                   })
        .Select(g => new 
                   {
                       Hour = g.Key.Hour,
                       Code = g.Key.Code, 
                       Count = g.Count()
                   }
            );
    
    foreach (var item in query)
    {
        //access properties here 
        //item.Hour, item.Code, item.Count  
    }
    

    【讨论】:

    • 如何以上述方式检索数据表中的数据? foreach (var x in query) { DataRow dr = gridviewdt.NewRow(); dr[0] = x.Code.ToString(); dr[j] = x.Count.ToString(); gridviewdt.Rows.Add(dr); }
    • 您新创建的过滤集合将包含您选择的 3 个匿名属性 - 小时、代码和计数。您可以在 foreach 循环中访问它们。
    • 我是否必须嵌套 foreach 循环才能在 1 个循环中获取列并在另一个循环中获取行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多