【问题标题】:Group By and Count分组和计数
【发布时间】:2012-05-22 08:31:07
【问题描述】:

我正在从数据库中检索类似的数据

ID - item ID  - State - type  - comment
===
1  - 158      -   0   - 114589- AAAAA    
2  - 158      -   1   - 108965- BBBBB    
3  - 159      -   1   - 100145- CCCCC    
4  - 159      -   0   - 100145- DDDDD    
5  - 159      -   1   - 114589- EEEEE    
6  - 162      -   0   - 100145- FFFFF    
7  - 162      -   1   - 108965- GGGGG

我需要返回结果选择项目ID,按项目ID、状态、类型和评论分组统计状态

如何使用 LINQ 做到这一点?

【问题讨论】:

    标签: c# .net linq linq-to-sql


    【解决方案1】:
    var grouped = from x in yourList
                 group by new {x.itemID, x.type ,x.comment };
    
    var counts = grouped.Select(x=>new {key = x.Key, count = x.Count());
    

    【讨论】:

      【解决方案2】:

      我不确定你的意思,但我认为这就是你想要的:

      var result = 
         from d in dataList
         group d by new { d.State, d.Type, d.Comment } in g
         select new { ItemId = g.Key, StateCount = g.Count(m => m.State) } 
         // I don't know what you mean with count the state. 
         // If you mean sum then you can use g.Sum(m => m.State) instead of g.Count(..)
      

      【讨论】:

        【解决方案3】:
        from DataRow row in dataSet
        group row by new
        {
            ID = (int) row["ID"],
            State = row["State"].ToString(),
            Type = (int)row["type"],
            Comment = row["comment"].ToString()
        } into rowGroup
        select new
        {
            Key = rowGroup.Key,
            Count = rowGroup.Count()
        };
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-03-31
          • 1970-01-01
          • 2015-06-30
          • 2017-02-28
          • 2014-09-07
          • 2018-11-18
          • 2017-10-01
          相关资源
          最近更新 更多