get parent name and child count from model using LINQ

Viewed 1467

I have the following model:

public Class Category{
   public int Id {get;set;}
   public string Name {get;set;}
   public ICollection<SubCategory> SubCategories {get;set;}
}

public Class SubCategory{
   public int Id {get;set;}
   public string Name {get;set;}
   public int CategoryId { get; set; }
   public virtual Category Category{ get; set; }
   public ICollection<Ticket> Tickets { get; set; }
}

public class Ticket {
    public Ticket();

    public int Id { get; set; }
    public virtual SubCategory SubCategory{ get; set; }
    public int SubCategoryId{ get; set; }   
}

I want to get data groupBy Category and get the count of tickets in each subcategory using this query:

Entities
                .Include(h => h.SubCategories )
                .ThenInclude(s => s.Tickets)
                .GroupBy(s => s.Id)
                .Select(t => new Cata {
                    Name = t.FirstOrDefault().Name,
                    Children = GetChildern(t.FirstOrDefault().SubCategories )
                });



public List<SubCat> GetChildern(IEnumerable<SubCategories> subs)
        {
            var output = new List<SubCat>();
            foreach (var sub in subs) {
                var subcat = new SubCat();
                subcat.Name = sub.Name;
                if (sub.Tickets != null) {
                    subcat.Size = sub.Tickets.Count;
                }
                output.Add(subcat);
            }
            return output;
        }

With the Query above the ticket is always zero for all, but tickets exists.

2 Answers
Related