public IEnumerable <ResourceUserRightModel> GetPermanentRightsOnDate(DateTime date, int?idRequestUser, string department, string unit, int?idResource) { var toDate = date; var fromDate = date.Date.AddDays(1); return((from rightAssoc in _rightRepository.GetRequestUserRightAssocs() join userAssoc in _rightRepository.GetRequestUserAssocs() on rightAssoc.IdRequestUserAssoc equals userAssoc.IdRequestUserAssoc join requestUser in _rightRepository.GetRequestUsers() on userAssoc.IdRequestUser equals requestUser.IdRequestUser join resourceRight in _rightRepository.GetResourceRights() on rightAssoc.IdResourceRight equals resourceRight.IdResourceRight where rightAssoc.IdRequestRightGrantType == 1 && rightAssoc.GrantedFrom < fromDate && (rightAssoc.GrantedTo == null || rightAssoc.GrantedTo > toDate) && (idRequestUser == null || userAssoc.IdRequestUser == idRequestUser.Value) && (department == null || requestUser.Department == department) && (unit == null || requestUser.Unit == unit) && (idResource == null || rightAssoc.ResourceRight.IdResource == idResource.Value) group new { rightAssoc.GrantedFrom, rightAssoc.Descirption } by new { requestUser.IdRequestUser, RequestUserSnp = requestUser.Snp, RequestUserDepartment = requestUser.Department, RequestUserUnit = requestUser.Unit, resourceRight.IdResourceRight, ResourceRightName = resourceRight.Name, ResourceRightDescription = resourceRight.Description, resourceRight.IdResource, ResourceName = resourceRight.Resource.Name, ResourceDescription = resourceRight.Resource.Description, } into gs select new ResourceUserRightModel { IdRequestUser = gs.Key.IdRequestUser, RequestUserSnp = gs.Key.RequestUserSnp, RequestUserDepartment = gs.Key.RequestUserDepartment, RequestUserUnit = gs.Key.RequestUserUnit, IdResourceRight = gs.Key.IdResourceRight, ResourceRightName = gs.Key.ResourceRightName, ResourceRightDescription = gs.Key.ResourceRightDescription, IdResource = gs.Key.IdResource, ResourceName = gs.Key.ResourceName, ResourceDescription = gs.Key.ResourceDescription, RightCategory = "Постоянное право", DateFrom = gs.Select(r => r.GrantedFrom).Min(), Description = gs.OrderByDescending(r => r.GrantedFrom).Select(r => r.Descirption).FirstOrDefault() }).ToList()); }