首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq查询与DateTimeFormatInfo月份列表中的结果不匹配

Linq查询与DateTimeFormatInfo月份列表中的结果不匹配
EN

Stack Overflow用户
提问于 2015-03-25 14:08:23
回答 1查看 110关注 0票数 1

我不明白为什么以下查询不匹配结果:

我目前正在使用西班牙文化信息,并使用以下字符串:

代码语言:javascript
复制
string input = "newsletter/2015/new-web/newsletter-detalle-marzo/segment-1-3";

我无法使用以下linq查询获得“时事通讯-detalle-marzo”:

代码语言:javascript
复制
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:在我当前的文化中,月份名称是:(数组的字符串连接)

[医]埃内罗发热,马佐尔

输出正在接受更多没有月份名称的结果:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-25 14:16:24

我认为你需要改变

代码语言:javascript
复制
DateTimeFormatInfo.CurrentInfo.MonthNames
.Select(m => m.ToLower()).ToArray().Contains(p)

代码语言:javascript
复制
DateTimeFormatInfo.CurrentInfo.MonthNames.Any(m => p.EndsWith(m.ToLower()))

如果月份总是在字符串的那个部分的末尾。或者您可以使用Contains,如果它可以在该部分的任何地方。

编辑

事实证明,DateTimeFormatInfo.CurrentInfo.MonthNames包含一个空字符串。所以你需要过滤掉它。

代码语言:javascript
复制
DateTimeFormatInfo.CurrentInfo.MonthNames
    .Where(m=> m.Length > 0)
    .Select(m=>m.ToLower())
    .Any(m => p.Contains(m))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29258025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档