加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从Linq GroupBy中检索值

发布时间:2020-12-15 21:15:34 所属栏目:百科 来源:网络整理
导读:我有一个包含大量日期的数据表.我想按日期对这些进行分组,并给每一行计算一次. 我设法通过以下方式做到了这一点: IEnumerable query = from row in stats.AsEnumerable() group row by row.Fieldstring("date") into grp select new { Date = grp.Key,Count
我有一个包含大量日期的数据表.我想按日期对这些进行分组,并给每一行计算一次.

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

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”声明您的“查询”变量,如上所示.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读