我需要在代码中使用groupby
来显示ActionId
和基于controllerId
字段进行分组。
问题是,除了我可以显示ActionId
这样的选择之外,我是这样的:
var group = conList.GroupBy(x => x.ControllerId).Select(x=>x.ActionId).ToList();
但是当我使用选择时,它只会显示Key
和Count
。
这是我的代码:
var group = conList.GroupBy(x => x.ControllerId).Select(x=>x.Key).ToList(););
我将如何解决这个问题?
答案 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上方的代码。
我希望解释可以帮助您解决问题。祝你好运!