我有一个字典定义为Dictionary<int, Regex>
。这里有许多已编译的Regex对象。这是使用C#.NET 4完成的。
我正在尝试使用Linq语句来解析字典并返回一个对象,该对象包含所有字典键以及在指定文本中找到每个正则表达式的索引。
ID返回正常,但我不确定如何获取找到文本的位置。有人可以帮助我吗?
var results = MyDictionary
.Where(x => x.Value.IsMatch(text))
.Select(y => new MyReturnObject()
{
ID = y.Key,
Index = ???
});
答案 0 :(得分:2)
使用Index
类的Match
属性,而不是简单的IsMatch
。
示例:强>
void Main()
{
var MyDictionary = new Dictionary<int, Regex>()
{
{1, new Regex("Bar")},
{2, new Regex("nothing")},
{3, new Regex("r")}
};
var text = "FooBar";
var results = from kvp in MyDictionary
let match = kvp.Value.Match(text)
where match.Success
select new
{
ID = kvp.Key,
Index = match.Index
};
results.Dump();
}
<强>结果强>
答案 1 :(得分:0)
您可以尝试使用基于List<T>.IndexOf
方法的代码。
.Select(y => new MyReturnObject()
{
ID = y.Key,
Index = YourDictionary.Keys.IndexOf(y.Key)
});