Попросите linq для манипулирования массивами массива - PullRequest
2 голосов
/ 24 декабря 2011

У меня есть массив, содержащий следующие элементы

{Mark=90, Students={"Tom","Marry","Jack"}},
{Mark=50, Students={"Niko","Gary","David"}},
{Mark=70, Students={"John","Andy","Amy"}}

Я хочу, чтобы предложение Linq преобразовало их в

{Mark=90, name="Tom"},
{Mark=90, name="Marry"},
{Mark=90, name="Jack"},
{Mark=50, name="Niko"},
{Mark=50, name="Gary"},
{Mark=50, name="David"},
{Mark=70, name="John"},
{Mark=70, name="Andy"},
{Mark=70, name="Amy"}

Как я мог это сделать?

Ответы [ 2 ]

5 голосов
/ 24 декабря 2011

Вы можете проецировать на анонимный класс (или реальный класс, если вам нужна последовательность за пределами вашего текущего метода):

var results = from x in myArray
              from s in x.Students
              select new { x.Mark, name = s };
3 голосов
/ 24 декабря 2011

Использование SelectMany:

data.SelectMany(
    item => Students.Select(
        student => new {Mark = item.Mark, name=student.Name}
    )
);
...