Linq to SQL действительные контакты в каждом клиенте - PullRequest
0 голосов
/ 02 октября 2018

Мне нужно вернуть всех клиентов со всеми действующими контактами:

Класс контакта:

public class Contact
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsValid { get; set; }
}

Класс клиента:

public class Customer
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<Contact> Contacts { get; set; }
}

Список клиентов:

List<Customer> customers = new List<Customer>
{
   new Customer
   {
       ID = 1,
       Name = "Ahmed",
       Contacts = new List<Contact>
       {
           new Contact { ID = 1 , Name = "A", IsValid = true },
           new Contact { ID = 2 , Name = "B", IsValid = true },
           new Contact { ID = 3 , Name = "C", IsValid = true }
       }
   },
   new Customer
   {
       ID = 2,
       Name = "Mohamed",
       Contacts = new List<Contact>
       {
           new Contact { ID = 4 , Name = "D", IsValid = true },
           new Contact { ID = 5 , Name = "E", IsValid = true },
           new Contact { ID = 6 , Name = "F", IsValid = false }
       }
   },
   new Customer
   {
       ID = 3,
       Name = "Ali",
       Contacts = new List<Contact>
       {
           new Contact { ID = 7 , Name = "X", IsValid = false },
           new Contact { ID = 8 , Name = "Y", IsValid = false },
           new Contact { ID = 9 , Name = "Z", IsValid = false }
       }
   }
};

Результат, необходимый после применения LINQ:

List<Customer> customersResult = new List<Customer>
            {
                new Customer
                {
                    ID = 1,
                    Name = "Ahmed",
                    Contacts = new List<Contact>
                    {
                        new Contact { ID = 1 , Name = "A", IsValid = true },
                        new Contact { ID = 2 , Name = "B", IsValid = true },
                        new Contact { ID = 3 , Name = "C", IsValid = true }
                    }
                },
                new Customer
                {
                    ID = 2,
                    Name = "Mohamed",
                    Contacts = new List<Contact>
                    {
                        new Contact { ID = 4 , Name = "D", IsValid = true },
                        new Contact { ID = 5 , Name = "E", IsValid = true }
                    }
                },
                new Customer
                {
                    ID = 3,
                    Name = "Ali",
                    Contacts = new List<Contact>()
                }
            };

мне нужно вернуть каждого клиента, и каждый клиент содержит только IsValid = true Contacts, сеть, в которой клиент не содержит IsValid Contacts Display без контактов,Как это можно сделать с помощью LINQ?

1 Ответ

0 голосов
/ 02 октября 2018
List<Customer> customersResult = customers.Select(x => new Customer {
    ID = x.ID,
    Name = x.Name,
    Contacts = x.Contacts?.Where(c => c.IsValid).ToList()
}).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...