2014-02-03 7 views
2

У меня есть инструкция linq, которая должна читать текстовый файл. Требуется переназначение URL-адресов и их удаление для получения доменов. Затем я хочу использовать уникальные домены и записывать их обратно в файл.Использование Linq для получения уникальных записей

Вот что я до сих пор:

 var urls = File.ReadAllLines(badLinks) 
      .Where(x => x.IsNotNullOrEmpty()) 
       .Select(x => ManipulateUrl(x)) 
       .Distinct() 
       .ToList(); 

Дело в том, что я заметил, что различные функции () включает в себя только домен если manipluated запись Distinct, когда я действительно повторно оценить список после изменений и создать список уникальных объектов (доменов).

Любая помощь приветствуется.

* UPDATE *

Извините, ребята, после пробития вниз списка оказывается, что исходный файл имеет проблему. Было сложно увидеть записи в 100 000.

+1

Что возвращается из 'ManipulateUrl',' string'? –

+0

Если URL-адрес начинается с 'http://mydomain.com/aff=123', возвращается строка 'http: // mydomain' – dotnetnoob

+2

Не могли бы вы объяснить причину? Я не понимаю, что случилось. – Douglas

ответ

2

Ваш код, безусловно, выглядит правильно, единственное, что приходит на ум, - это то, что ManipulateURL выбрасывает его.

Вы пытались расколоть код на два отдельных заявления, то есть:

var urls = File.ReadAllLines(badLinks) 
      .Where(x => x.IsNotNullOrEmpty()) 
      .Select(x => ManipulateUrl(x)); 

var distinctURLS = urls.Distinct().ToList(); 

По крайней мере, делая таким образом, вы можете пройти через код и проверить urls заселяется, как и следовало ожидать.

Смежные вопросы