wierzę takich zestawień nie jest w obecnych wersjach SQLite. Jako taki wydaje się, że najbardziej sensownym planem jest usunięcie sortowania z kwerendy, a następnie sortowanie w czystym .Net, gdzie masz pełną kontrolę i dostęp do konstruktów, takich jak informacje o wątku kultury.
Ponieważ oba mają miejsce w tym samym procesie, nie powinno to mieć większego wpływu na wydajność, chyba że zbiór danych jest bardzo duży.
SQLite 3 pozwala na zdefiniowane przez użytkownika funkcje sortowania, a te można wykonać w SQLite.Net jako funkcje .net, ale obciążenie związane z wywoływaniem w poprzek zarządzanej/niezarządzanej granicy jest znaczne. Oto jeden persons attempts to do it in c++. Jeśli nie masz dostępu do dobrze sprawdzonego i stabilnego sortowania kulturowego z unikodnym unicode w C++, sugeruję trzymanie się prostego sortowania po podejściu, jeśli to możliwe.
Oczywiście, jeśli wydajność sortowania zdefiniowanego przez użytkownika jest więcej niż wystarczająca dla twoich obecnych potrzeb, to idź z tym.
[SQLiteFunction(Name = "CULTURESORT", FuncType = FunctionType.Collation)]
class CultureSort : SQLiteFunction
{
public override int Compare(string param1, string param2)
{
return String.Compare(
param1,param2, CultureInfo.CurrentCulture, CompareOptions.IgnoreCase)
);
}
}
Post Script jeśli masz ochotę się fantazyjne: Jest błogosławiony kompilacji SQLite które integrates the ICU library do „właściwego” wsparcia unicode na zamawianie/jak/górna/dolna ale trzeba by zintegrować że do kodu sqlite używany jako podkład dla owijki .Net. To nie jest łatwe.
toooo powolny) przekształcenie cały ciąg tylko do korzystania pierwsze kilka znaków –
Czy spróbować? Konwersja następuje po stronie SQL. – Rover
Tak. Nie sądzę, że msil jest interpretowany inaczej po obu stronach. –