Мне необходимо выполнить слияние в памяти в C # двух отсортированных потоков строк, поступающих из одной или нескольких баз данных SQL Server 2000 в один отсортированный поток. Эти потоки данных могут быть огромными, поэтому я не хочу вытягивать оба потока в память. Вместо этого мне нужно хранить по одному элементу за раз из каждого потока в памяти и на каждом шаге сравнивать текущий элемент из каждого потока, помещать минимум в конечный поток и извлекать следующий элемент из соответствующего исходного потока. Тем не менее, чтобы сделать это правильно, сравнение в памяти должно соответствовать сопоставлению базы данных (рассмотрим потоки [A,B,C]
и [A,B,C]
: правильная объединенная последовательность равна [A,A,B,B,C,C]
, но если ваше сравнение в памяти считает C < B
, ваше слияние в памяти выдаст A,A,B
, после чего оно будет смотреть на B
и C
, и выдаст C
, что приведет к неправильно отсортированному потоку.)
Итак, мой вопрос: есть ли способ имитировать какие-либо параметры сортировки в SQL Server 2000 с перечислением System.StringComparison
в C # или наоборот? Самое близкое, что я пришел, - это использование System.StringCompaison.Ordinal
с результатами строк базы данных, преобразованными в VARBINARY
со стандартным порядком VARBINARY
, который работает, но я бы просто добавил предложение "order by name collate X"
в мой SQL запросов, где X - это некоторое сопоставление, которое работает точно так же, как и порядок VARBINARY
, вместо преобразования всех строк в VARBINARY
, когда они покидают базу данных, а затем обратно в строки, когда они поступают в память.