credo ad esempio le regole di confronto non è previsto nelle versioni attuali di SQLite. Come tale sembrerebbe che il piano più sensato sia quello di rimuovere l'ordinamento dalla query e invece di ordinare successivamente in puro .Net dove si ha il pieno controllo e l'accesso a costrutti come le informazioni sulla cultura del thread.
Poiché entrambi si verificano nello stesso processo, ciò non dovrebbe fare una grande differenza in termini di prestazioni a meno che il set di dati non sia molto grande.
SQLite 3 consente funzioni di confronto definite dall'utente e queste possono essere eseguite in SQLite.Net come funzioni .net ma il sovraccarico di chiamata avanti e indietro attraverso il limite gestito/non gestito è notevole. Ecco uno persons attempts to do it in c++. A meno che tu non abbia accesso a un ordinamento sensibile alla cultura unicode ben testato e stabile in C++ di qualcun altro, suggerisco di attenermi al semplice tipo dopo approccio, ove possibile.
Naturalmente se le prestazioni delle regole di confronto definite dall'utente sono più che sufficienti per le vostre esigenze attuali, passate a quello.
[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)
);
}
}
script di post, se avete voglia di fantasia: C'è un accumulo benedetto di SQLite che integrates the ICU library per 'adeguato' supporto Unicode su ordinazione/come/superiore/inferiore, ma si avrebbe bisogno di integrare che nel codice sqlite usato come supporto per il wrapper .Net. Questo non è facile.
toooo lento) la conversione di tutta una serie solo per utilizzare primo paio di personaggi –
hai provato esso? La conversione avviene sul lato SQL. – Rover
Sì. Non credo che msil sia interpretato in modo diverso su entrambi i lati. –