Linq Group By: удалить ключ из результата - PullRequest
0 голосов
/ 11 октября 2018

Linq group by сильно отличается от SQL (потому что он может работать с объектами, а не только с кортежами) и не так интуитивно понятен в начале.Я хотел бы написать небольшую функцию, чтобы поместить ее в Framework, например, MoreLinq.

Пример данных

Допустим, у нас есть AC # List с анонимным типом или DataReader с 3 «столбцами».,

enter image description here

Вы можете найти этот пример данных здесь, на скрипке .

Группировка по первому столбцу

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}, где данные свойства содержат все столбцы, кроме одного, используемого в группировке.

enter image description here

Можно ли обобщить этот тип операции?

var grouping = flateredList.GroupColumnsBy (s => s.IDMacroTab);

1 Ответ

0 голосов
/ 11 октября 2018

С кучей отражений, которые были бы возможны, но это было бы лишь незначительно полезно для небольшого количества объектов только для данных.

При больших объемах копирование всех объектов в принципе может не подходить для использования памяти приложением.

Для всех объектов, которые не являются POCO, это разрушает полезность наличия ООП и объектов,потому что они были просто сокращены до POCO.

Так что вместо того, чтобы делать копию, используя память, которая вам просто избыточна, и теряя функциональность, возможно, вы могли бы просто настроить выходной слой, чтобы представить его так, как вы этого хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...