Как проецировать несколько последовательных исходных элементов на один POCO с помощью LINQ - PullRequest
0 голосов
/ 24 марта 2019

Я хочу извлечь данные из таблицы Excel в следующей форме с помощью LINQ:

Heading1 .  A .  B
         .  C .  D
Heading2 .  E .  F
         .  G .  H
         .  I .  J

Это должно быть спроецировано на POCO, как

class projection
{
    string heading;
    List<string[]> datapoints;
}

Есть два вопроса, для которых я пытаюсь найти решение:

а) Мне было интересно, как спроецировать несколько последовательных элементов списка на одну структуру объекта.

b) Я хочу выбрать серию элементов в списке, определенном отдельным заголовком в одном поле, за которым следуют пустые элементы.

Для шага а) я смотрел на GroupBy:

[править:]

var table = new [] {
    new [] { "EP1","A","B"},
    new [] { "EP1","C","D"},
    new [] { "EP2","E","F"},
    new [] { "EP2","G","H"},

};


var EPs = table.GroupBy(x=>x[0])
    .Select(x => new {EP = x.Key, DPs = x.Select(y=>y)});

ДП будут занимать весь блок, поэтому я думаю, что это решит мою проблему

Для шага b) должна быть легко возможна предварительная обработка Excel таким образом, как: «заполните пустое поле заголовка заголовком выше». Но мне было интересно, была ли возможность сделать это с помощью LINQ.

...