Как развернуть данные в C # - PullRequest
       40

Как развернуть данные в C #

0 голосов
/ 07 ноября 2019

В настоящее время я заполняю объект данными из базы данных SQL, используя Linq и Entity Framework. Таблица в настоящее время отформатирована следующим образом:

Family Member |    FamilyID     |  PlanID    |    Rate
    John      |        1        |     1      |    50.39
    Sue       |        1        |     1      |    24.99
    John      |        1        |     2      |    29.99
    Sue       |        1        |     2      |    34.50
    Tim       |        2        |     1      |    119.00
    Mary      |        2        |     1      |    199.99

Может быть любое количество планов и любое количество семей, а в семьях может быть любое количество членов семьи. Мои текущие модели структурированы как:

public class Plan
{
    public List<Family> Families {get; set;}
    public int PlanID {get; set;}
    public string PlanName {get; set;}
}

public class Family
{
    public int FamilyId {get; set;}
    public List<FamilyMember> FamilyMemberList {get; set;}
    public decimal FamilyPlanTotalRate {get; set;}
}

public class FamilyMember
{
    public string MemberName {get; set;}
    public decimal Rate {get; set;}
}

Я использую linq для заполнения этой модели. В настоящее время это выглядит следующим образом:

var Plans = context.storedProecure()
                        .GroupBy(a => a.PlanID)
                        .Select(Plan => new Plans
                        {
                            PlanId = Plan.Key,
                            PlanName = Plan.Select(d => d.PlanName).First(),
                            Families = Plan.GroupBy(e => e.FamilyID).Select(Fam => new Family
                            {
                                FamilyId= Fam.Key,
                                FamilyMemberList = Fam.Select(FamMember => new FamilyMember
                                {
                                    Member = FamMember.MemberName,
                                    Rate = FamMember.Rate
                                }).ToList(),
                                FamilyPlanTotalMonthlyPremium = Fam.Sum(FamMember => FamMember.Rate)
                            }).ToList()
                        }).ToList();

Теперь мне нужно преобразовать эти данные (сводку) так, чтобы вместо Плана с несколькими семействами у Семейства было несколько планов, например:

Family Member |    Plan 1       |  Plan 2    |
    John      |      50.39      |   29.99    |
    Sue       |      24.99      |   34.50    | 
    Tim       |     119.00      |            |
    Mary      |     199.99      |            |

Конечная цель состоит в том, чтобы отобразить эти данные в виде таблицы в формате PDF с пакетом migradoc, но я не думаю, что это является центральной проблемой.

Любая помощь будет принята с благодарностью

...