J'ai demandé à question d'utiliser la méthode a Linq qui renvoie un objet (First, Min, Max, etc.) à partir d'une collection générique. Je veux maintenant pouvoir utiliser la méthode Except() de linq et je ne sais pas trop comment le faire. Peut-être que la réponse est juste en face de moi mais pense que j'ai besoin d'aide.
J'ai une méthode générique qui remplit les dates manquantes pour un champ descriptif correspondant. Cette méthode est déclarée comme suit:Utilisation de Except() sur une collection générique
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);
...
}
Ce que je veux accomplir est cela. datePropertyName est le nom de la propriété date que j'utiliserai pour remplir mes espaces de dates (en ajoutant des instances d'objet par défaut pour les dates qui ne sont pas déjà présentes dans la collection). Si je traitais avec une classe non générique, je ferais quelque chose comme ceci:
foreach (string description in descriptions)
{
var missingDates = allDates.Except(originalData.Where(d => d.Description == desc).Select(d => d.TransactionDate).ToList());
...
}
Mais comment puis-je faire la même chose en utilisant les FillInMissingDates de méthode générique avec les propriétés dateProperty et descriptionProperty résolus dans l'exécution?
Vous aurez besoin de nous montrer la définition de votre classe générique (ou au moins les bits pertinents) avant que nous puissions répondre correctement. – Noldorin
Noldorin, le type est T, comme dans la déclaration de méthode générique FillInMissingDates. –
@Gustavo: Je ne suis pas sûr de ce que vous voulez dire. Si vous ne restreignez pas le type générique T, vous ne pouvez pas garantir l'existence de la propriété datePropertyName. – Noldorin