//##################################################################### // Get all business in businesses linked to groups attached to the user //##################################################################### public IQueryable <Business> QueryBusinessViewableByUser(UserSessionModel user, bool showUnallocated) { IQueryable <Business> query; if (user == null || user.UserId == 0 || user.UserTypeId >= UserTypeEnum.DaikinSuperUser) { query = this.Businesses; } else { //##################################################################### // Show all businesses user can see including his/her own //##################################################################### //var results = this.QueryUsersViewableByUser(user, showUnallocated).ToList(); //var businesses = (from b in this.Businesses // select b).ToList(); //var test = (from b in businesses // join u in results // on b.BusinessId equals u.BusinessId into ub // from us in ub.DefaultIfEmpty() // select b).ToList(); //var test2 = (from u in test // join b in businesses // on u.BusinessId equals b.BusinessId // select b).Distinct().ToList(); //query = (from b in businesses // join u in results // on b.BusinessId equals u.BusinessId into ub // from u in ub.DefaultIfEmpty() // where u.BusinessId == b.BusinessId || b.BusinessId == user.BusinessId // select b // ).Distinct().AsQueryable(); query = (from b in this.Businesses join u in QueryUsersViewableByUser(user, showUnallocated) on b.BusinessId equals u.BusinessId into Lb from u in Lb.DefaultIfEmpty() where b.BusinessId == u.BusinessId || b.BusinessId == user.BusinessId select b).Distinct(); } return(query); }