c# - linq group by 语句

标签 c# linq

我有一个包含日期的对象 MyObject。 我有以下查询,其中 TheMonth 和 TheYear 是参数:

var MyQuery = from a in MyModelDC.MyTable
              where a.Month == TheMonth
              where a.Year == TheYear
              select new MyObject
                   {

                        var1 = a.Day,

                        var2 = (from b in MyModel.MyTable
                                where b.Month == a.Month
                                where b.Year == a.Year
                                select b.Identity).Count()
                    };

我想对结果进行分组,以便每天只出现一次。 Var 2 是一个计数,目前计数行对于每次出现的 Identity 都会重复,而不是每天都是唯一的。

谢谢。

最佳答案

如果我正确理解您的要求,我认为这会满足您的要求:

var myQuery = from date in MyModelDC.MyTable
              where date.Month == TheMonth && date.Year == TheYear
              group date by date.Day into dayGroup
              select new
              {
                  Day = dayGroup.Key,
                  Count = dayGroup.Count()
              };

在这里,我们首先按每个项目所指的日期对其进行分组,然后对组中的每个项目进行计数,以便仅包含该组特定日期的项目。

更新
要使用 MyObject 作为输出,您可以执行以下操作:

var myQuery = from date in MyModelDC.MyTable
              where date.Month == TheMonth && date.Year == TheYear
              group date by date.Day into dayGroup
              select new MyObject
              {
                  var1 = dayGroup.Key,
                  var2 = dayGroup.Count()
              };

关于c# - linq group by 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4741190/

相关文章:

c# - LINQ 在两次实现 IEnumerable<T> 时感到困惑

c# - LINQ根据计数> 1的另一列获取列

c# - 卫星资源 .dll 编译为错误的 .net 框架?

c# - 在 WPF 中实现自定义\用户控件的最佳实践

xml - VB.NET XML Linq 获取后代

c# - 将查询从 linq 复制到 Datatable 时出错

c# - Linq 通过 PK 选择?

c# - LINQ to SQL 插入顺序 GUID

c# - .NetCore 2.0 - MVC View 错误 - IEnumerable

c# - 分类时,NEST搜索元数据丢失