C# лямбда-фильтр по условию в подсписке - PullRequest
1 голос
/ 07 января 2020

Как я могу отфильтровать список на основе условия в подсписке. У меня есть поставщик с контактами, я хочу отфильтровать по имени первого контакта. Ниже приведен традиционный foreach, если есть фильтрация. Можно ли сделать подобное с лямбда-выражением?

if (!String.IsNullOrEmpty(model.ContactFirstName))
{
    List<CorporationSupplier> temp = new List<CorporationSupplier>();
    foreach (CorporationSupplier corporationSupplier in filteredCorporationSuppliers)
    {
        var contacts = corporationSupplier.Supplier.SupplierContacts;
        foreach (SupplierContact supplierContact in contacts)
        {
            if (supplierContact?.Person?.FirstName.ToLower() == model.ContactFirstName)
            {
                temp.Add(corporationSupplier);
            }
        }
    }
    filteredCorporationSuppliers = temp;
}

1 Ответ

2 голосов
/ 07 января 2020

Вы можете использовать Any в подсписке. Например:

filteredCorporationSuppliers.Where(s => 
    s.Supplier.SupplierContacts.Any(c => 
        c.Person?.FirstName.ToLower() == model.ContactFirstName));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...