Я не уверен, хотите ли вы, чтобы список, в котором несколько раз были люди, или просто список с доходами. Я даю вам пару решений, основанных на различных требованиях и предположениях, которые я должен был сделать относительно структуры вашего класса.
Сначала предположим, что вам нужен список, в котором у каждого элемента есть человек, месяц и заработок, и у вас есть структура класса человек с двумя содержащимися списками (один для заработков и один для месяцев, которые синхронизируются по индексам может использовать вариант следующего запроса LINQ для создания перечисления
var flatList = from person in persons
from month in person.Month.Select((month, index) => new {Month = month, Index = index})
from amount in person.Amount.Select((amount, index) => new { Amount = amount, Index = index })
where month.Index == amount.Index
select new { Name = person.Name, Month = month.Month, Amount = amount.Amount};
Если бы вместо этого вы хотели, чтобы месяц и суммы имели ту же структуру, вы бы написали следующее:
var flatList = from person in persons
from month in person.Month.Select((month, index) => new {Month = month, Index = index})
from amount in person.Amount.Select((amount, index) => new { Amount = amount, Index = index })
where month.Index == amount.Index
select new { Month = month.Month, Amount = amount.Amount};
Если бы вместо этого у вас был список людей, у которого есть объект заработка, соответствующий месяцу, и сумма, которую вы могли бы написать примерно так:
var flatList = from person in persons
from earning in person.Earnings
select new { Pers = person.Name, Month = earning.Month, Amount = earning.Amount };
Или еще раз, если вы не хотите, чтобы человек, которого вы бы использовали:
var flatList = from person in persons
from earning in person.Earnings
select new {Month = earning.Month, Amount = earning.Amount };
Я надеюсь, что один из них - то, что вы искали, иначе, пожалуйста, уточните ваш вопрос, потому что я неправильно понял.