使用GroupBy显示自定义信息

时间:2019-06-08 07:50:58

标签: c# entity-framework entity-framework-core

我需要在代码中使用groupby来显示ActionId和基于controllerId字段进行分组。

问题是,除了我可以显示ActionId这样的选择之外,我是这样的:

 var group = conList.GroupBy(x => x.ControllerId).Select(x=>x.ActionId).ToList();

但是当我使用选择时,它只会显示KeyCount

这是我的代码:

var group = conList.GroupBy(x => x.ControllerId).Select(x=>x.Key).ToList(););

我将如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

根据您的问题,我这样做了:

假设您有以下课程:

public class Controller
{
    public int ControllerId { get; set; }

    public int ActionId { get; set; }
}

以及以下数据:

var list = new List<Controller>() 
{
    new Controller() { ControllerId = 1, ActionId = 1 },
    new Controller() { ControllerId = 1, ActionId = 2 },
    new Controller() { ControllerId = 1, ActionId = 3 },
    new Controller() { ControllerId = 2, ActionId = 4 },
    new Controller() { ControllerId = 2, ActionId = 5 },
    new Controller() { ControllerId = 2, ActionId = 6 }
};

此命令的意思是。通过ControllerId( Key )将我的 Controller 类型的对象分组,对于每个分组的项目(g),我将拥有一个Controller类型的列表。

var groupedList = list.GroupBy(x => x.ControllerId).Select(g => g);

foreach(var g in groupedList)
{
    //g --> is your grouped object a list of type Controller by unique ControllerId.
    //g.Key --> is the value of each unique ControllerId.        
    Console.WriteLine("Group: " + g.Key + " Actions: " + string.Join(";", g.Select(actions => actions.ActionId)));      
}

预期结果

Group: 1 Actions: 1;2;3
Group: 2 Actions: 4;5;6

您可以测试here上方的代码。

我希望解释可以帮助您解决问题。祝你好运!

Here,您可以找到有关GroupBy here的一些示例和更多说明。