【问题标题】:LINQ QUERY TABLELINQ 查询表
【发布时间】:2022-01-12 00:37:28
【问题描述】:

当工作人员查看某些内容时,数据库中的数字会增加 1。 示例

abab : 1
cbcb : 1
dcdc: 1
abab : 1
abab : 1

我想打印谁在表格中查看了多少。 示例

abab : 3
cbcb : 1
dcdc : 1

但它没有按我想要的方式工作。我写的代码如下

Count = _viewHistoryRepository.GetByExpression(f => f.MemberId == c.MemberId).Sum(s=> s.ViewsCount)

输出:

abab : 3
abab : 3
abab : 3
cbcb : 1
dcdc: 1

我希望每个名字出现一次。谢谢

【问题讨论】:

    标签: c# linq sum


    【解决方案1】:

    你需要使用GroupBy然后:

    IEnumerable<string> query = _viewHistoryRepository
        .GroupBy(x => x.MemberId)
        .Select(g => $"{g.Key} : {g.Sum(x => x.ViewsCount)}");
    

    【讨论】:

      【解决方案2】:

      所以显然你有一个类似于这样的类:

      class StaffMemberView
      {
          public string Name {get; set;}
          public int ViewCount {get; set;}   // in your input always 1
          ... // other properties
      }
      

      如果您的输入确实始终具有值 1,则足以创建具有相同属性 Name 值的 StaffMemberview 组。在参数 resultSelector 中统计每组的元素个数:

      IEnumerable<StaffMemberView> staffMemberViews = ...
      var result = staffMemberViews.GroupBy(
      
          // keySelector: make groups with the same value for Name:
          staffMemberView => staffMemberView.Name,
      
          // parameter resultSelector, for every Name, and all StaffMemberViews that 
          // have this Name, make one new:
          (name, staffMembersViewsWithThisName) => new 
          {
              Name = name,
              ViewCount = staffMemberViewsWithThisName.Count(),
          });
      

      如果参数 ViewCount 有时不为 1,那么仅统计每个组中的 StaffMemberViews 是不够的,还需要对 ViewCount 的值求和。

      参数resultSelector变化:

      (name, staffMembersViewsWithThisName) => new 
      {
          Name = name,
          ViewCount = staffMemberViewsWithThisName
                      .Select(staffMemberView => staffMemberView.ViewCount)
                      .Sum(),
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-10
        • 2015-05-22
        相关资源
        最近更新 更多