微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 从Linq GroupBy中检索值

我有一个包含大量日期的数据表.我想按日期对这些进行分组,并给每一行计算一次.

我设法通过以下方式做到了这一点:

IEnumerable query = from row in stats.AsEnumerable()
                     group row by row.Field<string>("date") into grp
                     select new { Date = grp.Key,Count = grp.Count(t => t["date"] != null) };

(其中“stats”是数据表)

我可以从调试中看到,这会带回所有按需要分组的值,但现在我需要循环它们并获取每个日期和计数.

我的问题是我不知道如何检索值!

我有一个foreach循环

foreach (var rw  in query)
{
   string date = rw.Date; // <---- this is my problem?
}

我不知道我的Ienumerable是什么类型可以引用它中的值!

所以我的问题是如何通过类似上面的方式检索每一行的每个日期和计数?

我希望这是有道理的!

解决方法

博客上的这个链接可以帮到你
http://www.matlus.com/linq-group-by-finding-duplicates/

基本上你的类型是一个匿名类型,所以你不能将它作为一个类型引用,但你可以像你想要的那样访问属性.

我想我看到了你的问题.如果您尝试从方法返回它,您应该定义一个类型并重新启动它,如下所示:

public IEnumerable<MyType> GetQuery()
{

  var query = from row in stats.AsEnumerable()
                    group row by row.Field<string>("date") into grp
                    select new { Date = grp.Key,Count = grp.Count(t => t["date"] != null) }; 

  foreach (var rw  in query)
  {
     yield return new MyType(rw.Date,rw.Count);
  }
}

使用“var”声明您的“查询”变量,如上所示.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐