我一直在努力奋斗。我需要从一个字段包含“ [“ +任何数字+”]“的集合中提取所有记录。基本上是[0],[1],[2]等。如果在方括号中包含数字,则需要它。我尝试过:
allvalues.Where(p => p.Path.Contains(property.Path) && p.Path.Contains(p.Path.Split('[', ']')[1])
但是如果不存在,我会得到可怕的错误
索引超出范围
我不能使用以下内容:
allvalues.Where(p => p.Path.Contains(property.Path) && p.Path.Contains('[')
因为有些路径包含“ []”,但我不想要这些。
我考虑过Regex.IsMatch,但是由于找不到任何此类示例,因此我假设您无法将其与lambda混合使用。
答案 0 :(得分:4)
您对正则表达式说的很对,在这里看起来很合适。
使用模式\[\d+\]
说明:
\[
-初步匹配[
\d+
-匹配一个或多个数字硬币
\]
-从字面上匹配]
代码中的用法:
allvalues
.Where(p => p.Path.Contains(property.Path) && Regex.Match(p.Path, @"\[\d+\]").Success);