public async Task <List <MemberScoreCountDto> > GetRecordsAsync([FromQuery] MemberScoreCountSearch SearchCondition) { List <Lib.MemberScoreEntity> AllMemberScores = await _GHDbContext.dsMemberScores.Include(x => x.Member). Where(x => x.ScoreUnitName.Equals(SearchCondition.ScoreUnitName, StringComparison.Ordinal) && x.OccurDate.Year.ToString(System.Globalization.CultureInfo.InvariantCulture).Equals(SearchCondition.YearNumber, StringComparison.Ordinal)) //.OrderBy(x=>x.MemberIndex) .ToListAsync().ConfigureAwait(false); List <IGrouping <string, Lib.MemberScoreEntity> > ListIgroupMemberScores = AllMemberScores.GroupBy(x => x.MemberId).ToList(); List <MemberScoreCountDto> memberScoreCounts = new List <MemberScoreCountDto>(); for (int i = 0; i < ListIgroupMemberScores.Count; i++) { List <Lib.MemberScoreEntity> memberScores = ListIgroupMemberScores[i].ToList(); memberScoreCounts.Add(new MemberScoreCountDto { MemberId = ListIgroupMemberScores[i].Key, //分组key,本例中即为:MemberId MemberName = memberScores[0].Member.Name, MemberIndex = memberScores[0].Member.OrderIndex, ScoreCount = 100f + memberScores.Sum(x => x.Score), YearNumber = SearchCondition.YearNumber, CountDate = DateTime.Now, ScoreUnitName = SearchCondition.ScoreUnitName, UserId = SearchCondition.UserId, }); } memberScoreCounts.Sort((x, y) => (int)(y.ScoreCount - x.ScoreCount)); return(memberScoreCounts); }
public PageViewModel() { SearchCondition = new MemberScoreCountSearch() { ScoreUnitName = AppSet.LoginUser.UnitName, UserId = AppSet.LoginUser.Id, YearNumber = DateTime.Now.Year.ToString() }; MemberScoreCounts = new ObservableCollection <Lib.MemberScoreCount>(); }