1

在我的应用程序中,我访问了许多不同类型的公司,比如 TypeA、TypeB 和 TypeC。所以我有一个公司类,从公司继承的是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 和 2。

4

1 回答 1

4

您可以使用LINQ'OfType<T>()方法预先过滤Company对象列表,并生成IEnumerable<TypeA>,如下所示:

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

您可以在后续的 LINQ 过滤器中使用 的属性TypeA- 即使下面的代码Property1仅适用于TypeA而不适用于Company

var filteredTypeA = typeA.Where(c => c.Property1 = "xyz").ToList();
于 2012-12-13T11:29:31.127 回答