На основании вашего вопроса я сделал это:
Допустим, у вас есть следующий класс:
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 }
};
Чтоэта команда говорит, что есть.Сгруппируйте мой объект типа Controller по ControllerId ( Key ), и для каждого сгруппированного элемента (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
Вы можете проверить приведенный выше код здесь .
Я надеюсь, что объяснение поможет вам решить вашу проблему.Удачи!
Здесь Вы можете найти некоторые образцы и более подробное объяснение о GroupBy
здесь .