2016-02-18 5 views
0

Хорошо, это мой первый вопрос здесь, в стеке. Таким образом, у меня есть текущий код (Примечание им с помощью C#) -Intersect сортирует результаты по алфавиту C#

public static void ReadSuburbs() 
     { 
      String directory = @"C:\Address Sorting\"; 
      String[] linesA = File.ReadAllLines(Path.Combine(directory, "FileA-Database.txt")); 
      String[] linesB = File.ReadAllLines(Path.Combine(directory, "Suburbs.txt")); 

      IEnumerable<String> onlyB = linesB.Intersect(linesA); 

      File.WriteAllLines(Path.Combine(directory, "ResultsSuburbs.txt"), onlyB); 
     } 

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

Допустит, моя база данных по содержали название улиц

12 margret st kallangur 

14 simpson st zillmere 

43 pauls rd bowen hills 

И suburbs.txt содержит список всех пригородов в Австралии

В результате им ищет будет

kallangur 

zillmere 

bowen hills 

Но что ими получают

Bowen HIlls 
Kallangur 
Zillmere 

Есть ли другой способ, который я могу использовать, кроме intersect, чтобы получить результат, который вы ищете?

EDIT: Поэтому в основном то, что у меня есть база данных, полные адреса, которые были введены неправильно - Поэтому в основном мы имеем 12 святая улицы Kallangur и множество других адресов в этой базе данных, и что мне нужно сделать, это отдельная пригороды от названий улиц.

+1

Я не вижу, как вы получаете любой вывод на всех, так как '12 Маргрет й kallangur' и из другого файла просто' kallangur' - это не одна и та же строка. В вашем примере ни одна строка из файла FileA-Database.txt не совпадает с одной строкой из Suburbs.txt. –

+0

.Intersect() не должен изменять порядок «отмеченные элементы приведены в том порядке, в котором они были собраны». См. Раздел «Примечания» https://msdn.microsoft.com/library/bb460136%28v=vs.100% 29.aspx? F = 255 & MSPPError = -2147217396 –

+0

Являются ли пригороды в Suburbs.txt в алфавитном порядке отсортированными? Это может быть так. – Rahul

ответ

1

Если у вас есть

IEnumerable<String> onlyB = linesB.Intersect(linesA); 

содержимое linesB определяют порядок результирующей последовательности. Если вы хотите Linesa определить порядок, просто включите оператор вокруг и использовать

IEnumerable<String> onlyB = linesA.Intersect(linesB); 
+0

Спасибо! Это исправило мою проблему :) Также я понимаю, что я сделал не так. Haha woops –

+0

Вы должны знать, что если у вас несколько адресов в одном и том же пригороде, вы получите только одну запись в результирующей последовательности для каждого пригорода! – NineBerry

+0

Ahh просто понял, что как раз тогда, когда я проходил через файл, а не ложился на ложку, могу ли я иметь подсказку, чтобы исправить это? –

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