Using Include vs ThenInclude

“Include” works well with list of object, but if you need to get multi-level data, then “ThenInclude” is the best fit. Let me explain it with an example. Say we have two entities, Company and Client:

public class Company
{
    public string Name { get; set; }

    public string Location { get; set; }

    public List<Client> Clients {get;set;}
}

 public class Client
 {
    public string Name { get; set; }

    public string Domains { get; set; }

    public List<string> CountriesOfOperation { get; set; }
 }

Now if you want just companies and the entire client list of that company, you can just use “Include”:

using (var context = new YourContext())
{
  var customers = context.Companies
    .Include(c => c.Clients)
    .ToList();
}

But if you want a Company with “CountriesOfOperation” as related data, you can use “ThenInclude” after including Clients like below:

using (var context = new MyContext())
{
   var customers = context.Companies
    .Include(i => i.Clients)
      .ThenInclude(a => a.CountriesOfOperation)
    .ToList();
}

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)