C#与集合有关的继承问题

C#与集合有关的继承问题,c#,C#,在我的应用程序中,我访问了许多不同类型的公司,比如TypeA、TypeB和TypeC。所以我有一个company类,从company继承的是TypeA,TypeB,TypeC 所以我有一个视图,用户想要在TypeA上进行搜索。搜索字段包括Company中的字段和TypeA中的字段。 但是,如果我有一个TypeA的集合,比如IEnumberable,在我在TypeA类中过滤字段之前,如何过滤Company类中的字段 编辑 这是我的伪代码 public abstract class Company

在我的应用程序中,我访问了许多不同类型的公司,比如TypeA、TypeB和TypeC。所以我有一个company类,从company继承的是TypeA,TypeB,TypeC

所以我有一个视图,用户想要在TypeA上进行搜索。搜索字段包括Company中的字段和TypeA中的字段。 但是,如果我有一个TypeA的集合,比如IEnumberable,在我在TypeA类中过滤字段之前,如何过滤Company类中的字段

编辑

这是我的伪代码

public abstract class Company
{
      public string Property1 { get; set; }
      public string Property2 { get; set; }

}

public class TypeA : Company
{
      public string Property3 {get; set; }
}

public class TypeB : Company
{
      public string Property4 {get; set; }
}

public abstract class SearchCompany
{
      protected SearchCompany(string searchpProperty1, string searchProperty2)
      {
           // assign property code elided
      }

      public string SearchProperty1 { get; set; }
      public string SearchProperty2 { get; set; }

}

public class SearchTypeA : SearchCompany
{
      public SearchTypeA (string searchpProperty1, string searchProperty2, string searchProperty3)
           : base (searchpProperty1, searchProperty2)
      {
          // assign property code elided
          this.TypeAList = CacheObjects.TypeAList;
          this.TypeAList = // this.TypeAList filtered by searchProperty3 depending on the wildcard
      }

      public string SearchProperty3 { get; set; }
      public IList<TypeA> TypeAList { get; set; }
}
公共抽象类公司
{
公共字符串属性1{get;set;}
公共字符串属性2{get;set;}
}
公共类A型:公司
{
公共字符串属性3{get;set;}
}
B类公共类:公司
{
公共字符串属性4{get;set;}
}
公共抽象类搜索公司
{
受保护的SearchCompany(字符串SearchProperty1、字符串searchProperty2)
{
//删除指定属性代码
}
公共字符串SearchProperty1{get;set;}
公共字符串SearchProperty2{get;set;}
}
公共类SearchTypeA:SearchCompany
{
公共搜索类型A(字符串搜索属性1、字符串搜索属性2、字符串搜索属性3)
:base(searchpProperty1、searchProperty2)
{
//删除指定属性代码
this.typelist=CacheObjects.typelist;
this.typeList=//this.typeList根据通配符由searchProperty3筛选
}
公共字符串SearchProperty3{get;set;}
公共IList类型列表{get;set;}
}

我还想对属性1和属性2进行筛选。

您可以使用
LINQ
of type()
方法预筛选
公司
对象列表,并生成
IEnumerable
,如下所示:

IEnumerable<TypeA> typeA = allCompanies.OfType<TypeA>();

您可以使用
LINQ
of type()
方法预筛选
公司
对象列表,并生成
IEnumerable
,如下所示:

IEnumerable<TypeA> typeA = allCompanies.OfType<TypeA>();

这不是很清楚。你能发布伪代码来显示你想做什么吗?为什么你需要先做一个再做另一个?答案不确定,但对于其他人,我认为他想做的是找到一种方法,在对继承的类应用过滤器之前,根据基类中的字段过滤集合。这是一个LINQ问题?@Sayse-这有点奇怪,因为这些字段应该对继承类可用。这不是很清楚。你能发布伪代码来显示你想做什么吗?为什么你需要先做一个再做另一个?答案不确定,但对于其他人,我认为他想做的是找到一种方法,在对继承的类应用过滤器之前,根据基类中的字段过滤集合。这是一个LINQ问题?@Sayse-这有点奇怪,由于这些字段应该可用于继承类。这看起来很有用,我将尝试一下。这看起来很有用,我将尝试一下。