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

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

Результат, который я ищу, будет

kallangur

zillmere

bowen hills

Но что я получаю

Bowen HIlls
Kallangur
Zillmere

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

РЕДАКТИРОВАТЬ: Итак, в основном у меня есть база данных, полная адресов, которые были введены неправильно. Таким образом, в основном у нас есть 12 Saint Street Kallangur и много других адресов в этой базе данных, и что мне нужно сделать, это отделить пригороды от названий улиц.


person Dillon Munien    schedule 18.02.2016    source источник
comment
Я не понимаю, как вы вообще получаете какой-либо вывод, поскольку 12 margret st kallangur и из другого файла только kallangur не являются одной и той же строкой. В вашем примере ни одна строка из FileA-Database.txt точно не соответствует одной строке из Suburbs.txt.   -  person Eric J.    schedule 19.02.2016
comment
.Intersect() не должен изменять порядок the marked elements are yielded in the order in which they were collected. см. раздел "Примечания" msdn.microsoft.com/library/   -  person Eric J.    schedule 19.02.2016
comment
Отсортированы ли пригороды в Suburbs.txt по алфавиту? Возможно, это так.   -  person Rahul    schedule 19.02.2016
comment
Да, они не совсем совпадают, но я получаю вывод, есть ли другой метод, который я должен использовать? И Рахул, да, они отсортированы по алфавиту, мне потребовалось некоторое время, чтобы собрать все пригороды в Австралии, и я отсортировал их по алфавиту.   -  person Dillon Munien    schedule 19.02.2016
comment
Затем, как сказал @nineberry, порядок определяется вашим отсортированным списком. Измените свой запрос пересечения в соответствии с его рекомендацией   -  person Rahul    schedule 19.02.2016
comment
Нам все еще нужно немного больше деталей. Ваша задача может оказаться не такой простой, потому что на самом деле существуют действительные названия дорог, содержащие названия пригородов.   -  person NineBerry    schedule 19.02.2016
comment
Не знаю, какие еще подробности указать   -  person Dillon Munien    schedule 19.02.2016


Ответы (1)


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

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

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

IEnumerable<String> onlyB = linesA.Intersect(linesB);
person NineBerry    schedule 18.02.2016
comment
Благодарю вас! Это исправило мою проблему :) Также я понимаю, что я сделал неправильно. Хаха упс - person Dillon Munien; 19.02.2016
comment
Вы должны знать, что если у вас есть несколько адресов в одном и том же пригороде, вы получите только одну запись в результирующей последовательности для каждого пригорода! - person NineBerry; 19.02.2016
comment
Ааа, только что понял, что именно тогда, когда я просматривал файл, а не кормить с ложечки, так что могу ли я получить подсказку, как это исправить? - person Dillon Munien; 19.02.2016
comment
Трудно понять, чего вы на самом деле пытаетесь достичь. Отредактируйте свой вопрос и объясните немного подробнее, что вы на самом деле пытаетесь сделать. - person NineBerry; 19.02.2016
comment
Отредактировано - РЕДАКТИРОВАТЬ: Итак, в основном у меня есть база данных, полная адресов, которые были введены неправильно. Итак, в основном у нас есть 12 Saint Street Kallangur и многие другие адреса в этой базе данных, и мне нужно сделать это отделить пригороды от названий улиц. - person Dillon Munien; 19.02.2016
comment
Снова отредактируйте, просто вместо этого использовалась функция where, теперь она также создает дубликаты :) - person Dillon Munien; 19.02.2016