У меня есть набор курсов (идентификатор, имя, статус, инструктор и т. Д. c) и еще один набор цен (CourseId, цена).
Я пытаюсь написать метод расширения linq для объединить эти два вместе, но мое отражение немного ржавое. Что мне не хватает?
Я хочу назвать это так:
courses.SewData(pricing, p => p.Id, c => c.CourseId);
Это вызываемый метод. У меня проблемы с ToDictionary Line. Это не компилирование. Как мне создать словарь с моим существующим выражением
public static class DataExtension {
public static IEnumerable<TParent> SewData<TParent, TChild>(this IList<TParent> parentCollection, IList<TChild> childCollection, Expression<Func<TParent, object>> parentProperty, Expression<Func<TChild, object>> childProperty) {
var parentPropertyInfo = ReflectionHelper.GetProperty(parentProperty);
var childPropertyInfo = ReflectionHelper.GetProperty(childProperty);
var parentDict = parentCollection.ToDictionary(parentProperty, x => x); //need help here
foreach (var child in childCollection) {
var childId = childPropertyInfo.GetValue(child);
var parentItem = parentDict[childId];
//use reflection here to map properties by name
yield return parentItem;
}
}
}