일반 콜렉션에서 하나의 오브젝트 (First, Min, Max 등)를 리턴하는 Linq 메소드 사용에 대해이 question에 대해 질문했습니다. 이제 linq의 Except() 메소드를 사용할 수 있기를 원하며 어떻게해야할지 모르겠습니다. 아마 대답은 내 앞에 있지만 도움이 필요하다고 생각합니다.
해당 설명 필드에 대해 누락 날짜를 채우는 일반적인 방법이 있습니다. 이 방법은 다음과 같이 선언됩니다.일반 콜렉션에서 Except() 사용
public IEnumerable<T> FillInMissingDates<T>(IEnumerable<T> collection, string datePropertyName, string descriptionPropertyName)
{
Type type = typeof(T);
PropertyInfo dateProperty = type.GetProperty(datePropertyName);
PropertyInfo descriptionProperty = type.GetProperty(descriptionPropertyName);
...
}
내가 원하는 것은 이것입니다. datePropertyName은 날짜 간격을 채우는 데 사용할 날짜 속성의 이름입니다 (컬렉션에 아직없는 날짜의 기본 객체 인스턴스 추가). '비 제네릭 클래스를 처리 한 경우에, 나는 이런 식으로 뭔가 할 것 :
foreach (string description in descriptions)
{
var missingDates = allDates.Except(originalData.Where(d => d.Description == desc).Select(d => d.TransactionDate).ToList());
...
}
을하지만 런타임에서 해결 dateProperty 및 descriptionProperty 특성을 가진 일반적인 방법 FillInMissingDates를 사용하여 동일한을 어떻게 할 수 있습니까?
당신은 우리에게 당신의 제네릭 클래스의 정의를 표시해야합니다 (: 이처럼 사용할 필요가 또는 적어도 관련 비트). – Noldorin
Noldorin, 형식은 FillInMissingDates 제네릭 메서드 선언에서와 마찬가지로 T입니다. –
@ 구스타보 : 무슨 뜻인지 잘 모르겠습니다. 제네릭 형식 T를 제한하지 않으면 datePropertyName 속성의 존재를 보장 할 수 없습니다. – Noldorin