如何指定Regex(在LINQ查询中)只比较一个字符串的开头?

时间:2009-12-17 17:49:02

标签: c# regex linq

我有以下代码:

            string filterTerm = txtDocFilterTerm.Text.ToLower();
            var regEx = new Regex(filterTerm);

            //griQualifiedDocs is a grid
            //storage.QualifiedDocs is the master/original collection

            griQualifiedDocs.ItemsSource = storage.QualifiedDocs
                .Where(item => regEx.IsMatch(item.DocName.ToLower()))
                .ToList();

此查询将返回与filterterm匹配的所有字符串,无论它在字符串中的位置如何。我如何限制它,以便正则表达式仅针对字符串的开头运行?

例如,如果过滤器为“Jones”,则当前代码将返回“Joe Jones”和“Jonesy Smith”;我只想回归“琼斯史密斯”

TIA。

2 个答案:

答案 0 :(得分:6)

使用“^”锚定到字符串的开头。

var regEx = new Regex("^" + filterTerm);

答案 1 :(得分:3)

为什么不使用它(假设你当然没有传递正则表达式):

 griQualifiedDocs.ItemsSource = storage.QualifiedDocs
                .Where(item =>item.DocName.ToLower().StartsWith(filterTerm))
                .ToList();