您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

FileExtensions.cs 1.4KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Diligent.WebAPI.Contracts.DTOs.Files;
  2. namespace Diligent.WebAPI.Business.Extensions
  3. {
  4. [ExcludeFromCodeCoverage]
  5. public static class FileExtensions
  6. {
  7. public static IQueryable<FileEntity> FilterByExtension(this IQueryable<FileEntity> query, string[]? values)
  8. {
  9. if (values == null || values.Length == 0)
  10. return query;
  11. return query.Where(n => values.Contains(n.Extension));
  12. }
  13. public static IQueryable<FileEntity> FilterByCategory(this IQueryable<FileEntity> query, string[]? values)
  14. {
  15. if (values == null || values.Length == 0)
  16. return query;
  17. return query.Where(n => values.Contains(n.Category.Name));
  18. }
  19. public static IQueryable<FileEntity> FilterByTags(this IQueryable<FileEntity> query, string[]? values)
  20. {
  21. if (values == null || values.Length == 0)
  22. return query;
  23. //return query.Where(n => values.Any(x => n.Tags.Any(y => y.Name == x)));
  24. return query.Where(n => n.Tags.Any(x => values.Contains(x.Name)));
  25. }
  26. public static IQueryable<FileEntity> FilterFiles(this IQueryable<FileEntity> query, FileFilter filters)
  27. {
  28. return query
  29. .FilterByCategory(filters.Categories)
  30. .FilterByExtension(filters.Extensions)
  31. .FilterByTags(filters.Tags);
  32. }
  33. }
  34. }