Как выбрать верхнюю запись X с помощью нескольких групп

У меня есть список

List[0]: .colA:"Red". colB:"Big".colC:"2020".colD:"info0a".colE:"info02".

List[1]: .colA:"Red". colB:"Big".colC:"2021".colD:"info1a".colE:"info12".

List[2]: .colA:"Red". colB:"Big".colC:"2022".colD:"info2a".colE:"info22".

List[3]: .colA:"Red". colB:"Small".colC:"2021".colD:"info3".colE:"info32".

List[4]: .colA:"Red". colB:"Small".colC:"1999".colD:"info4a".colE:"info42".

List[5]: .colA:"Blue". colB:"Small".colC:"2023".colD:"info5a".colE:"info52".

List[6]: .colA:"Blue". colB:"Small".colC:"2025".colD:"info5a".colE:"info52".

Я хочу сначала сгруппировать по colA и colB, затем выбрать самую старую запись в соответствии с colC, поэтому результат должен быть

colA:"Red".colB:"Big".colC:"2020".colD:"info0a".colE:"info02".(for Red,Big,oldest is 2020)

colA:"Red".colB:"Small".colC:"1999".colD:"info4a".colE:"info42".(Red,Small,oldest 1999)

colA:"Blue".colB:"Small".colC:"2020".colD:"info5a".colE:"info52".(Blue,Small, oldest 2023)

Могу ли я узнать, как это сделать? Спасибо

🤔 А знаете ли вы, что...
C# имеет обширную библиотеку классов .NET, что упрощает разработку приложений.


51
1

Ответ:

Решено

Используйте методы LINQ:

var oldest = myList.
    .GroupBy(x => new { x.colA, x.colB })
    .Select(g => g.OrderBy(x => x.colC).First())
    .ToArray();