C#过滤派生类的属性

时间:2016-05-11 14:06:23

标签: c# class inheritance

我有一个名为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; }
}

现在我有一个选择产品(Pensioen / AOV)的过程,并希望根据所选产品进行过滤。

,我得到了所有的档案
Context.Dossiers

然后我在ProductID上过滤。如果它的Pensioen我想过滤例如" Premie"如果它是AOV,那么我想过滤" MaandPremie"。但是因为我有Context.Dossiers,我想知道是否可以过滤派生类属性?

1 个答案:

答案 0 :(得分:1)

取决于时间关键时刻,这是一种方式;

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);