Linq group by сильно отличается от SQL (потому что он может работать с объектами, а не только с кортежами) и не так интуитивно понятен в начале.Я хотел бы написать небольшую функцию, чтобы поместить ее в Framework, например, MoreLinq.
Пример данных
Допустим, у нас есть AC # List с анонимным типом или DataReader с 3 «столбцами».,

Вы можете найти этот пример данных здесь, на скрипке .
Группировка по первому столбцу
var grouping = from x in flattenedList
group x by x.IDMacroTab
into grouping_0
select new
{
IdMacrotab = grouping_0.Key,
Data = (from y in grouping_0
select new { IDTab = y.IDTab, IDSlot = y.IDSlot })
};
Результат
И вот результат: табличные данные разбиваются на новые {Key + Data}, где данные свойства содержат все столбцы, кроме одного, используемого в группировке.

Можно ли обобщить этот тип операции?
var grouping = flateredList.GroupColumnsBy (s => s.IDMacroTab);