【问题标题】:How to GroupBy Virtual Column如何 GroupBy 虚拟列
【发布时间】:2015-07-13 11:19:30
【问题描述】:

您好,我有 Reeves 的问题表,我正在尝试检查哪个 reeve 造成的问题最多。所以这是我的问题模型;

public int Id { get; set; }
public string Name { get; set; }
public string Text { get; set; }
public short Sira { get; set; }
public DateTime Created { get; set; }
public virtual Topic Topic { get; set; }
public virtual Member WhoIs { get; set; }
public virtual Province Province { get; set; }
public virtual Town Town { get; set; }
public virtual District District { get; set; }
public virtual Reeve Reeve { get; set; }

如您所见,我将 Reeve 作为虚拟表。当我创建表时,我得到 Reeve_Id 并尝试到 .GroupBy(m => m.Reeve.Id) 所以这是代码;

public ActionResult GroupByReeve()
    {
        var model = new ProblemModel
        {

            ProblemsList = Db.Problems.GroupBy(m => m.Reeve.Id)
            .Select(s => new ProblemModel.ProblemForView
            {

                Id = s.FirstOrDefault().Id,
                CountItem = s.Count(),
                AllItem = Db.Problems.Count(),
               ReeveName=s.FirstOrDefault().Reeve.Name

            })

        };
        return View(model);
    }

所以我可以按他们的 Id 而不是 ReeveId 对问题进行分组。视图返回 4 个项目(4 个问题)但它们只属于 2 个 Reeves 所以它必须显示 2 个项目而不是 4 个项目。我该怎么做?

【问题讨论】:

    标签: asp.net-mvc linq entity-framework asp.net-mvc-4


    【解决方案1】:

    我不确定,为什么您的代码不起作用(看起来应该),但以下是您正确使用 GroupBy 的方法:

    ProblemsList = Db.Problems.GroupBy(m => m.Reeve.Id,
                                       s => new ProblemModel.ProblemForView
            {
    
                Id = s.FirstOrDefault().Id,
                CountItem = s.Count(),
                AllItem = Db.Problems.Count(),
                ReeveName=s.FirstOrDefault().Reeve.Name
    
            });
    

    【讨论】:

      猜你喜欢
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 2017-10-23
      相关资源
      最近更新 更多