如何GroupBy虚拟列

时间:2015-07-13 11:19:30

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

您好我有问题表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个项目。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我不确定,为什么你的代码不起作用(看起来应该如此),但这里是你如何正确使用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

        });