我不明白为什么以下查询不匹配结果:
我目前正在使用西班牙文化信息,并使用以下字符串:
string input = "newsletter/2015/new-web/newsletter-detalle-marzo/segment-1-3";我无法使用以下linq查询获得“时事通讯-detalle-marzo”:
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:在我当前的文化中,月份名称是:(数组的字符串连接)
[医]埃内罗发热,马佐尔
输出正在接受更多没有月份名称的结果:

发布于 2015-03-25 14:16:24
我认为你需要改变
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))https://stackoverflow.com/questions/29258025
复制相似问题