Get total count of object's elements and all children objects` elements
Why do you need to make the .ToList() call instead of keeping the IEnumerable objects returned by Select methods? 

    public int GetCount(int ID) 
    { 
        var childrenIDs = DbContext.Taxonomy 
            .Where(x =&gt; x.ParentID == ID) 
            .Select(x =&gt; x.TaxID); 
        var grandchildrenIDs = DbContext.Taxonomy 
            .Where(x =&gt; childrenIDs.Contains(x.ParentID)) 
            .Select(x =&gt; x.TaxID); 
        var count = DbContext.Table2.Count(x =&gt; 
         x.FK_TaxID == ID ||
         childrenIDs.Contains(x.FK_TaxID) ||
        grandchildrenIDs.Contains(x.FK_TaxID)); 
        return count; 
}


This way, the only call to database is the last one.