Linq Query не соответствует результатам в списке месяцев DateTimeFormatInfo

1

Я не понимаю, почему следующий запрос не соответствует результатам:

В настоящее время я работаю с использованием Spanish Culture Info и используя следующую строку:

string input = "newsletter/2015/new-web/newsletter-detalle-marzo/segment-1-3";

Я не могу получить "newsletter-detalle-marzo", используя следующий запрос linq:

public static string[] GetSegmentMatchingMonth(this string input, string breakPattern = "-") {     

   var query = (from p in input.ToLower().Split('/')
                     where p.Contains(breakPattern) &&
                     DateTimeFormatInfo.CurrentInfo.MonthNames.
                     Select(m=>m.ToLower()).Any(m => p.Contains(m.ToLower()))
                     select p).ToArray();
   return query;
}               

PD: В моей текущей культуре MonthNames: (объединение строк в Array)

enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre

Результат получает больше результатов без названия месяца:

Изображение 174551

  • 1
    Я предполагаю, что «marzo» не содержит «newsletter-detail-marzo» ( DateTimeFormatInfo.CurrentInfo.MonthNames ...)
  • 0
    Подождите, пока это не наоборот. Я обновляю вопрос
Показать ещё 4 комментария
Теги:
linq

1 ответ

0
Лучший ответ

Я думаю, вам нужно изменить

DateTimeFormatInfo.CurrentInfo.MonthNames
.Select(m => m.ToLower()).ToArray().Contains(p)

в

DateTimeFormatInfo.CurrentInfo.MonthNames.Any(m => p.EndsWith(m.ToLower()))

Если месяц всегда будет в конце той части строки. Или вы можете использовать Contains если он может быть где угодно в этой части.

РЕДАКТИРОВАТЬ

Оказывается, что DateTimeFormatInfo.CurrentInfo.MonthNames содержит одну пустую строку. Поэтому вам нужно отфильтровать это.

DateTimeFormatInfo.CurrentInfo.MonthNames
    .Where(m=> m.Length > 0)
    .Select(m=>m.ToLower())
    .Any(m => p.Contains(m))
  • 0
    Извините, я разместил неправильный предыдущий код для защиты связанных с бизнесом URL-адресов и переменных обновленный
  • 0
    Невероятно !!!. Полностью верно. Я не понял, о пустой строке !!!! Теперь это работает! Спасибо за хорошее зрение
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню