從模型計算,我有以下型號:獲取父名和兒童在使用LINQ
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; }
}
我想要得到的數據GROUPBY類別和使用此查詢取票的數量在每個子類:
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;
}
使用上面的查詢,票據始終爲零,但存在票據。
顯然,您的查詢屬於[Ignored Includes](https://docs.microsoft.com/en-us/ef/core/querying/related-data)類別。不要在沒有需要的情況下使用'GroupBy',並避免導致客戶端評估的自定義方法。 –