Как указать Regex (в запросе LINQ), чтобы сравнить только начало строки? - PullRequest
1 голос
/ 17 декабря 2009

У меня есть следующий код:

            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();

Этот запрос вернет все строки, соответствующие фильтру, независимо от его места в строке. Как я могу ограничить это, чтобы регулярное выражение запускалось только в начале строки?

Например, текущий код возвратит «Джо Джонс» и «Джонси Смит», если фильтр «Джонс»; Я только хочу вернуть "Джонси Смит"

ТИА.

Ответы [ 2 ]

6 голосов
/ 17 декабря 2009

Используйте «^» для привязки к началу строки.

var regEx = new Regex("^" + filterTerm);
3 голосов
/ 17 декабря 2009

Почему бы не использовать это (при условии, конечно, что вы не передаете выражения регулярных выражений):

 griQualifiedDocs.ItemsSource = storage.QualifiedDocs
                .Where(item =>item.DocName.ToLower().StartsWith(filterTerm))
                .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...