NameExtensions.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using MediaBrowser.Common.Extensions;
  2. using MoreLinq;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Globalization;
  6. using System.Linq;
  7. namespace MediaBrowser.Controller.Library
  8. {
  9. public static class NameExtensions
  10. {
  11. public static bool AreEqual(string x, string y)
  12. {
  13. if (string.IsNullOrWhiteSpace(x) && string.IsNullOrWhiteSpace(y))
  14. {
  15. return true;
  16. }
  17. return string.Compare(x, y, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace) == 0;
  18. }
  19. public static bool EqualsAny(IEnumerable<string> names, string x)
  20. {
  21. x = NormalizeForComparison(x);
  22. return names.Any(y => string.Compare(x, y, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace) == 0);
  23. }
  24. private static string NormalizeForComparison(string name)
  25. {
  26. if (name == null)
  27. {
  28. return string.Empty;
  29. }
  30. return name;
  31. //return name.RemoveDiacritics();
  32. }
  33. private static string RemoveDiacritics(string name)
  34. {
  35. if (name == null)
  36. {
  37. return string.Empty;
  38. }
  39. //return name;
  40. return name.RemoveDiacritics();
  41. }
  42. public static IEnumerable<string> DistinctNames(this IEnumerable<string> names)
  43. {
  44. return names.DistinctBy(RemoveDiacritics, StringComparer.OrdinalIgnoreCase);
  45. }
  46. }
  47. class TextComparer : IComparer<string>, IEqualityComparer<string>
  48. {
  49. public int Compare(string x, string y)
  50. {
  51. if (string.IsNullOrWhiteSpace(x) && string.IsNullOrWhiteSpace(y))
  52. {
  53. return 0;
  54. }
  55. return string.Compare(x, y, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace);
  56. }
  57. public bool Equals(string x, string y)
  58. {
  59. return Compare(x, y) == 0;
  60. }
  61. public int GetHashCode(string obj)
  62. {
  63. return (obj ?? string.Empty).GetHashCode();
  64. }
  65. }
  66. }