2012-02-24 3 views
3

일반 메서드를 디자인하려고하는데이 메서드는 말 직원의 컬렉션을 처리합니다. employee 클래스는 약 5-10 개의 속성을가집니다. 필자는 필터를 전달하고 Employee 클래스의 일부 속성을 사용하여 (generic) 컬렉션 클래스 인 EmployeeSummary를 가져오고 싶습니다.Linq 쿼리 - 일반 하위 집합 만들기

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

방법은이 컬렉션에 동적으로 필터를 적용하고 상위 클래스의 속성의 일부를 포함하는 것 형 T의 새로운 프로젝션을 다시 반환 할 수 있어야합니다. 동적으로 필터를 적용하는 것에 대한 다른 게시물을 볼 수 있지만 하위 세트 지정에 대한 정보를 찾을 수 없습니다 (가능한 경우 또는 잘못된 방법에 대해 설명합니다). 따라서 하위 집합의 경우 호출자는 이름과 유형이 상위 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, 닷넷 4.0이에 대한 C# 당신의 도움/시간이 가장 좋은 대답이

답변

2

확실하지 주셔서 감사하지만 사용

이 규칙은 규칙을 사용하여 두 유형 간의 매핑을 제공합니다.

+1

귀하의 의견을 보내 주셔서 감사합니다. Valueinjecter 라이브러리를 찾고 있으며 유망 해 보입니다. – RamGopal