2015-04-07 4 views
0

я узнал, как извлечь отдельные элементы из HTML-файла здесь How can I query a text file for distinct instances of a pattern?Как использовать OrderBy <> в моем LINQified Regex?

... и результаты хорошие. Я получаю (усеченный):

<span class="sam" title="This is Sam Clemens speaking"> 
<span class="others" title="This is 'The Sphynx' speaking"> 
<span class="others" title="This is the stagecoach driver speaking"> 
<span class="others" title="This is someone other than the main characters speaking"> 
<span class="others" title="The station-boss is speaking"> 
<span class="others" title="This is 'an elderly pilgrim' speaking"> 
<span class="others2" title="This is Jack speaking"> 
<span class="bemis" title="This is Bemis speaking"> 

Я хотел бы отсортировать эти, хотя, так что выше:

<span class="bemis" title="This is Bemis speaking"> 
<span class="sam" title="This is Sam Clemens speaking"> 
<span class="others" title="The station-boss is speaking"> 
<span class="others" title="This is 'an elderly pilgrim' speaking"> 
<span class="others" title="This is 'The Sphynx' speaking"> 
<span class="others" title="This is someone other than the main characters speaking"> 
<span class="others" title="This is the stagecoach driver speaking"> 
<span class="others2" title="This is Jack speaking"> 

Эта строка кода:

distinct_values = MyRegex.Matches(str).Cast<Match>().Select(p => p.Value).Distinct().ToList(); 

... сначала получает данные, как показано. Я полагаю, что мне нужно сделать что-то вроде этого:

distinct_values = MyRegex.Matches(str).Cast<Match>().Select(p => p.Value).Distinct().OrderBy<> 

... но даже если я прав, я не знаю, что должно быть в угловых скобках OrderBy.

ответ

3

Угловые скобки? Ничего, это будет выведено. Это аргумент, что важно:

.OrderBy(p => p).ToList(); 

Конечно, это работает только, как и ожидалось, потому что сортировка по всей струны достаточно хорошо здесь. Если нет, вы можете выбрать как фактическую строку, так и другую группу захвата, которая имеет только, например. значение class.

1

его так же, как Select:

.OrderBy(p => p.PropertyName) 

где PropteryName это имя свойства, которое необходимо сделать заказ на него.

, если вы хотите, возвращаемое значение как список затем:

.OrderBy(p => p.PropertyName).ToList(); 

в вашем случае, поскольку его не объект, но строки, то:

.OrderBy(p => p).ToList();