2012-02-24 8 views
3

私はジェネリックメソッドを設計しようとしています。メソッドは、従業員の集合を扱います。従業員クラスには約5〜10の属性があります。フィルタを渡して、Employeeクラスの属性のいくつかを使ってコレクションクラスEmployeeSummary(汎用)を取得したいと考えています。Linqクエリ - ジェネリックサブセットの作成

public T GetFilteredSubset<T>(Somecollection employeeList, filter) 

方法は、このコレクションに動的フィルタを適用し、親クラスの属性のサブセットを含むであろう型Tの新しい投影バック戻すことができなければなりません。私は動的にフィルタを適用することに関する他の投稿を見ていますが、サブセットの指定に関する情報を見つけることはできません(これは可能でも、間違った方法で行っても構いません)。そのため、サブセットの場合、呼び出し側は、name属性とtype属性が親Employeeクラスの属性と正確に一致し、属性のサブセットのみを含むクラスを作成します。関数はフィルタを適用できる必要があり、型Tに基づいて、呼び出し元にそれらの属性のみを返します。

public static IEnumerable<TSelect> 
      GetFilteredSubset<TEntity, TSelect>(IEnumerable<TEntity> collection, 
               Func<TEntity, bool> filter) 
     where TSelect : class, new() 
    { 
     IEnumerable<TSelect> result = collection.Where(filter) 
      .Select(s => new TSelect().InjectFrom(s)) 
      .Cast<TSelect>(); 

     return result; 
    } 

InjectFromValueInjecterライブラリからです:VS 2010、.NET 4.0、これについてはC# あなたの助け/時間これが最善の答えがある場合

答えて

2

わからないのおかげではなく何を使用して

これは、規約を使用して2つのタイプ間のマッピングを提供します。

+1

私はValueinjecterライブラリを見ており、有望です – RamGopal

関連する問題