abdul subhan mohammed Ответов: 2

Как сравнить ID в list< list & lt;int>> В LINQ


Привет ребята,

У меня есть список, и в нем у меня есть еще один список.

Например: в кандидате у меня есть список сертификатов, а в сертификате-список модулей.

Я хочу сравнить кандидата.Сертификат.Модели.Удостоверение личности с данными.ModuleID.

Что я уже пробовал:

List<CandidateCertificateInfo> candidateCertificates = CandidateCertificateController.GetAllCandidateCertificateByCandidateID(candidateSession.CandidateCertificate.CandidateID).Where(item => item.Certification.ProgramID == candidateSession.Module.ProgramID).ToList();

foreach (var candidateCertificate in candidateCertificates)
{
    List<int> candidateCertificateModuleID = candidateCertificate.CandidateCertificateModuleDetails.Select(item => item.ModuleID).ToList();
    foreach (int ccmid in candidateCertificateModuleID)
    {
        if (ccmid == candidateSession.ModuleID)
        {
            //CODE HERE...
        }
    }
}



я хочу сделать этот код как можно меньше. Или это, о'Кей, то, что я написал.

Пожалуйста, дайте мне знать.


спасибо

2 Ответов

Рейтинг:
1

OriginalGriff

Well...it немного бессмысленно объединять возвращаемое значение Linq в список только для того, чтобы использовать его в качестве цели foreach .. что вы и делаете дважды.
И всегда есть список"Т".Метод ForEach, который мог бы полностью заменить внутренний цикл.


Рейтинг:
0

Maciej Los

Если вы хотите достичь этого с помощью Linq, то наиболее подходящим методом является Перечисли.Любой[^]

var result = candidateCertificates.CandidateCertificateModuleDetails.Any(x=>x.ModuleID == Given.ModuleID);

Возвращается true если модуль был найден или false в других случаях.