2016-04-26 10 views
-1

Ich muss eine Sammlung von Elementen speichern (C# Typ In-Memory), die eine Reihe von Feldern hat wie: Sprache, Besitzer, Schlüssel, etc. Ich möchte diese auf eine Weise speichern, die eine schnelle Filterung ermöglicht. Z.B. Ich möchte vielleicht alle Einträge, die language = "en" hat AND key = "key1". Es wird nicht oft gefiltert und seine Größe kann um 10k Einträge sein, würde eine einfache Liste/Wörterbuch genügen? Ich bin neugierig, wie man das lösen kann, wenn es um größere Listen geht, die öfter gefiltert werden.Die beste Methode zum Speichern von Daten (im Speicher), die gefiltert werden?

+0

Entweder reimplementieren [Indexierung] (https://www.simple-talk.com/sql/learn-sql-server/sql-server-index-basics/) in C# oder einfach nur DB – Martheen

+0

DB ist kein Option (meine Frage bearbeitet). – Pking

+0

Sie können In-Memory [SQLite] (http://zetcode.com/db/sqlitecsharp/intro/) DB verwenden. – Martheen

Antwort

0

Wenn es ausreicht, um es im Speicher zu speichern, und es gibt nicht so viele Varianten der Filterung, könnten Sie eine Wörterbuch-basierte Datenstruktur erstellen.

Eine andere Lösung ohne Verwendung einer klassischen relationalen DB ist Lucene.net, eine sehr schnelle Suchmaschine. Obwohl es eine steile Lernkurve und eine Dokumentation hat, die Raum für Verbesserungen bietet ;-) https://www.nuget.org/packages/Lucene.Net/

Oder - verwenden Sie einfach eine klassische DB und achten Sie darauf, Indizes richtig einzustellen.

+0

Danke für Ihre Eingabe. Es ist ausreichend, In-Memory zu speichern, und es gibt nicht so viele Varianten (es wird wie das Beispiel sein, das ich in meinem Post gegeben habe). – Pking

Verwandte Themen