OfflineExamQueryExtensions.cs 1.5 KB

12345678910111213141516171819202122232425262728293031
  1. using Hotline.Application.Exam.Core.Utilities;
  2. using Hotline.Exams.ExamManages;
  3. using Hotline.Share.Requests.Exam;
  4. using JiebaNet.Segmenter.Common;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Linq.Expressions;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace Hotline.Application.Exam.QueryExtensions.ExamManages
  12. {
  13. public static class OfflineExamQueryExtensions
  14. {
  15. public static Expression<Func<ExamOfflineExamAnalysis, bool>> GetExpression(this OfflineExamAnalysisPagedRequest offlineExamAnalysisPagedRequest)
  16. {
  17. Expression<Func<ExamOfflineExamAnalysis, bool>> expression = m => m.Id != null;
  18. expression = ExpressionableUtility.CreateExpression<ExamOfflineExamAnalysis>()
  19. .AndIF(offlineExamAnalysisPagedRequest.StartTime.IsNotNull(), x => x.StartTime >= offlineExamAnalysisPagedRequest.StartTime)
  20. .AndIF(offlineExamAnalysisPagedRequest.EndTime.IsNotNull(), x => x.StartTime <= offlineExamAnalysisPagedRequest.EndTime)
  21. .AndIF(offlineExamAnalysisPagedRequest.Keyword.IsNotEmpty(), x => x.ExamName.Contains(offlineExamAnalysisPagedRequest.Keyword))
  22. .AndIF(offlineExamAnalysisPagedRequest.MinScore.IsNotNull(), x => x.Score > offlineExamAnalysisPagedRequest.MinScore)
  23. .AndIF(offlineExamAnalysisPagedRequest.MaxScore.IsNotNull(), x => x.Score < offlineExamAnalysisPagedRequest.MaxScore)
  24. .ToExpression();
  25. return expression;
  26. }
  27. }
  28. }