Я попросил об этом question об использовании метода Linq, который возвращает один объект (первый, минимальный, и т. Д.) Из общей коллекции. Теперь я хочу использовать метод Except() linq, и я не уверен, как это сделать. Возможно, ответ прямо на меня, но думаю, что мне нужна помощь.
У меня есть общий метод, который заполняет отсутствующие даты для соответствующего описательного поля. Этот метод объявляется ниже:Использование исключения() в общей коллекции
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 - это имя свойства date, которое я буду использовать для заполнения пробелов в дате (добавление экземпляров объекта по умолчанию для дат, которые еще не присутствуют в коллекции). Если бы я иметь дело с необщим классом, я хотел бы сделать что-то вроде этого:
foreach (string description in descriptions)
{
var missingDates = allDates.Except(originalData.Where(d => d.Description == desc).Select(d => d.TransactionDate).ToList());
...
}
Но как я могу сделать то же самое, используя общий FillInMissingDates метода со свойствами dateProperty и descriptionProperty решенных во время выполнения?
Вы должны показать нам определение вашего общего класса (или, по крайней мере, соответствующие биты), прежде чем мы сможем правильно ответить. – Noldorin
Noldorin, тип T, как в объявлении общего метода FillInMissingDates. –
@ Густаво: Я не уверен, что вы имеете в виду. Если вы не ограничиваете общий тип T, то вы не можете гарантировать существование свойства datePropertyName. – Noldorin