简体   繁体   English

C#过滤派生类的属性

[英]C# Filter on property of derived Class

I have class called Dossier which is my Base Class and a classes called PensioenDossier and AovDossier which inherits Dossier. 我有一个名为Dossier的类,这是我的基础类,还有一个名为PensioenDossier和AovDossier的类,该类继承了Dossier。

public partial class Dossier
{
    public int ID { get; set; }
    public int ProductID { get; set; }
    public string Nummer { get; set; }
}
public partial class PensioenDossier : Dossier
{
    public decimal Premie { get; set; }
    public decimal? PartnerPensioen { get; set; }
}
public partial class AovDossier : Dossier
{
    public decimal VerzekerdKapitaal { get; set; }
    public decimal? MaandPremie { get; set; }
}

Now I have a process where I select a Product(Pensioen/AOV) and want to filter based on the selected Product. 现在,我有了一个选择产品(Pensioen / AOV)并希望基于所选产品进行过滤的过程。 So I get the all Dossiers by 所以我得到了所有的档案

Context.Dossiers

I then filter on ProductID. 然后,我根据ProductID进行过滤。 And if its Pensioen I would like to filter on for example "Premie" and if it is AOV then I want to filter on "MaandPremie". 如果是Pensioen,我想过滤“ Premie”,如果它是AOV,那么我想过滤“ MaandPremie”。 But since I got Context.Dossiers I am wondering if it possible to filter on the derived class properties? 但是,既然我有了Context.Dossiers,我想知道是否可以对派生类的属性进行过滤?

Depending on how time critical things are, here is one way; 根据时间紧迫性的不同,这是一种方法。

var allDossiers = Context.Dossiers.AsQueryable();
var filteredPensioenDossiers = allDossiers.OfType<PensioenDossier>().Where(d => d.Premie > 1000);
var filteredAovDossiers = allDossiers.OfType<AovDossier>().Where(d => d.MaandPremie.HasValue);

var allFilteredDossiers = (filteredPensioenDossers as Dossier).Concat(filteredAovDossiers as Dossier);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM