public async Task <List <Lib.MemberHolidayCountDto> > GetRecordsAsync([FromQuery] MemberHolidayCountSearch SearchCondition) { List <Lib.MemberHolidayEntity> AllMemberHolidaies = await _GHDbContext.dsMemberHoliday.Include(x => x.Member). Where(x => x.UnitName.Equals(SearchCondition.UnitName, StringComparison.Ordinal) && Convert.ToString(x.EndDate.Year, System.Globalization.CultureInfo.InvariantCulture).Equals(SearchCondition.YearNumber, StringComparison.Ordinal)) .OrderBy(x => x.Member.OrderIndex) .ToListAsync().ConfigureAwait(false); List <IGrouping <string, Lib.MemberHolidayEntity> > ListIgroupMemberHolidaies = AllMemberHolidaies.GroupBy(x => x.MemberId).ToList(); List <MemberHolidayCountDto> memberScoreCounts = new List <MemberHolidayCountDto>(); for (int i = 0; i < ListIgroupMemberHolidaies.Count; i++) { List <Lib.MemberHolidayEntity> memberScores = ListIgroupMemberHolidaies[i].ToList(); memberScoreCounts.Add(new MemberHolidayCountDto { MemberId = ListIgroupMemberHolidaies[i].Key, //分组key,本例中即为:MemberId UnitName = SearchCondition?.UnitName, MemberName = memberScores[0].Member.Name, PersonalLeaveCount = memberScores.Where(x => x.HolidayType.Equals("事假", StringComparison.Ordinal)).Sum(x => (x.EndDate - x.BeginDate).Days), AnnualCount = memberScores.Where(x => x.HolidayType.Equals("年休假", StringComparison.Ordinal)).Sum(x => (x.EndDate - x.BeginDate).Days), SickLeaveCount = memberScores.Where(x => x.HolidayType.Equals("病假", StringComparison.Ordinal)).Sum(x => (x.EndDate - x.BeginDate).Days), OtherHolidayCount = memberScores.Where(x => !(new string[] { "事假", "年休假", "病假" }).Contains(x.HolidayType)).Sum(x => (x.EndDate - x.BeginDate).Days), YearNumber = SearchCondition.YearNumber, CountDate = DateTime.Now }); } return(memberScoreCounts); }
public PageViewModel() { SearchCondition = new MemberHolidayCountSearch() { UnitName = AppSet.LoginUser.UnitName, UserId = AppSet.LoginUser.Id, YearNumber = DateTime.Now.Year.ToString() }; MemberHolidayCounts = new ObservableCollection <Lib.MemberHolidayCount>(); }