suppose que j'ai les classes suivantes:
List<ServiceStatistics> statistics = SoapService.GetStatistics(Now);
List<int> incomingIds = new List<int>();
foreach(var item in statistics)
{
foreach(var element in item.Statistic)
{
incomingIds.Add(int.Parse(element.StatisticId));
}
}
List<int> extract = RelevantDutyPlans.ExtractRelevantDutyPlans(incomingIds);
3 Réponses :
J'espère que vous pouvez utiliser SelectMany fort> pour aplatir la collection et procéder au filtre. var filteredItems = statistics.SelectMany(s => s.Elements)
.Where(s => extract.Contains(Convert.ToInt32(s.StatisticId)))
.ToList();
Que diriez-vous d'une approche différente de peu. Il suffit de supprimer tout de suite des plans non pertinents!
List<ServiceStatistics> statistics = SoapService.GetStatistics(Now);
foreach(var item in statistics)
{
item.Elements.RemoveAll(x => !RelevantDutyPlans.Contains(int.Parse(x.StatisticId)));
}
C'est une très belle approche, Thx beaucoup :) Vérifiera si elle s'adapte au flux de travail et donnez des commentaires :)
Vous pouvez également utiliser LINQ pour créer une nouvelle liste code> si vous devez conserver l'original statististcs code> intact - E.G. Si vous pouviez exécuter plusieurs plans contre cela. var relevantStatistics = statistics.Select(s => new {
LocalId = s.LocalId,
OrganizationId = s.OrganizationId,
Elements = s.Elements.Where(e => !RelevantDutyPlans.Contains(Convert.ToInt32(e.StatisticId))).ToList()
});
Votre extrait code> code> renvoie la mauvaise variable.