1

私のアプリケーションでは、TypeA、TypeB、TypeC など、さまざまなタイプの多数の企業にアクセスしています。だから私は会社のクラスを持っていて、会社から継承されたのはTypeA、TypeB、TypeCです。

したがって、ユーザーが TypeA で検索を実行したいビューがあります。検索フィールドには、Company のフィールドと TypeA のフィールドが含まれます。ただし、IEnumberable などの TypeA のコレクションがある場合、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>()のリストを事前にフィルター処理し、次のように生成できます。CompanyIEnumerable<TypeA>

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

TypeA後続の LINQ フィルターでのプロパティを使用できProperty1ます。TypeACompany

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