1 つまたは複数の SQL Server 2000 データベースからの 2 つの並べ替えられた文字列ストリームを C# でインメモリ マージして、1 つの並べ替えられたストリームにする必要があります。これらのデータ ストリームは巨大になる可能性があるため、両方のストリームをメモリに取り込みたくありません。代わりに、メモリ内の各ストリームから一度に 1 つのアイテムを保持し、各ステップで各ストリームの現在のアイテムを比較し、最小値を最終ストリームにプッシュし、適切なソース ストリームから次のアイテムをプルする必要があります。ただし、これを正しく行うには、メモリ内比較がデータベースの照合と一致する必要があります (ストリーム[A,B,C]
と を考慮して[A,B,C]
ください: 正しいマージされたシーケンスは ですが[A,A,B,B,C,C]
、メモリ内比較が と考えるC < B
場合、メモリ内マージは を生成A,A,B
しますaB
と aを見ているポイントC
となり、 が生成C
され、正しくソートされていないストリームが生成されます。)
私の質問は、SQL Server 2000 の照合順序をSystem.StringComparison
C# の列挙型で模倣する方法、またはその逆の方法はありますか? 最も近いSystem.StringCompaison.Ordinal
のは、データベース文字列をVARBINARY
標準の順序に変換した結果を使用することですが、これは機能しますが、SQL クエリに句をVARBINARY
追加するだけで済みます。ここで、X は、データベースを離れるときにすべての文字列を に変換し、メモリに入るときに文字列に戻すのではなく、順序付けします。"order by name collate X"
VARBINARY
VARBINARY