일반 메서드를 디자인하려고하는데이 메서드는 말 직원의 컬렉션을 처리합니다. 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;
}
InjectFrom
가 ValueInjecter 라이브러리입니다 : VS 2010, 닷넷 4.0이에 대한 C# 당신의 도움/시간이 가장 좋은 대답이
귀하의 의견을 보내 주셔서 감사합니다. Valueinjecter 라이브러리를 찾고 있으며 유망 해 보입니다. – RamGopal