C# 多个集合关系

C# 多个集合关系,c#,xaml,observablecollection,collectionviewsource,C#,Xaml,Observablecollection,Collectionviewsource,我的一个ViewModel上几乎没有与此对象直接或间接相关的集合。这是一个很大的简化,它是这样的: public class PatientViewModel : ViewModelBase { private string ID { get; } public ObservableCollection<VisitViewModel> Visits { get; } public ObservableCollection<TreatmentViewM

我的一个ViewModel上几乎没有与此对象直接或间接相关的集合。这是一个很大的简化,它是这样的:

public class PatientViewModel : ViewModelBase
{
    private string ID { get; }

    public ObservableCollection<VisitViewModel> Visits { get; }

    public ObservableCollection<TreatmentViewModel> Treatments{ get; }

    public ObservableCollection<MedicationViewModel> Medications{ get; }

    public PatientViewModel(string id)
    {
        ID = id;

        Visits = Factory.GenerateCollection(EntityType.Visit, id);

        Treatments= Factory.GenerateCollection(EntityType.Treatment, id);

        Medications= Factory.GenerateCollection(EntityType.Medication, id);
    }
}


public class VisitViewModel : ViewModelBase
{
    private string ID { get; }
    private string PatientID { get; }
    ...
}

public class TreatmentViewModel: ViewModelBase
{
    private string ID { get; }
    private string VisitID { get; }
    private string PatientID { get; }
    ...
}

public class MedicationViewModel: ViewModelBase
{
    private string ID { get; }
    private string TreatmentID { get; }
    private string PatientID { get; }
    ...
}
公共类PatientViewModel:ViewModelBase
{
私有字符串ID{get;}
公众可观察收集访问{get;}
公共可观察收集处理{get;}
公开收集药物{get;}
公共PatientViewModel(字符串id)
{
ID=ID;
访问量=Factory.GenerateCollection(EntityType.Visite,id);
处理=工厂.GenerateCollection(EntityType.Treatment,id);
药物=Factory.GenerateCollection(EntityType.Medicing,id);
}
}
公共类VisitViewModel:ViewModelBase
{
私有字符串ID{get;}
私有字符串PatientID{get;}
...
}
公共类处理ViewModel:ViewModelBase
{
私有字符串ID{get;}
私有字符串VisitID{get;}
私有字符串PatientID{get;}
...
}
公共类MedicinationViewModel:ViewModelBase
{
私有字符串ID{get;}
私有字符串处理ID{get;}
私有字符串PatientID{get;}
...
}
我可能会在这三个集合之间创建层次链,但我不想这样做,因为:

  • 在PatientViewModel上完成的多个聚合(如HasMedicingLike、HadVisitin去年、hasUnsuccessfulTreatments等)

  • 初始加载时间(从sql获取3个大集合要比遍历每个节点加载单个集合快得多)

问题: 如何配置集合视图源分组,以便生成如下视图:
你会考虑一个视图模型属性,它返回一个LINQ查询,通过一个连接将该视图拼凑出来,而不是在这三个观察表中的什么?我有我需要的所有数据,问题是对它进行分组。使用它使DATACONTRONT变得松散,所以我不能与PaultVIEW模型相关,你会考虑一个视图模型属性,它返回一个LINQ查询,通过一个连接将该视图拼凑在一起,从这三个观察表中得到什么?我有我需要的所有数据,我的问题是对它进行分组。使用使其失去了数据上下文,因此我无法再与PatientViewModel联系起来