Suche ein IEnumerable<Dynamik>
Habe ich eine aufzählbare wie folgt:
IEnumerable<dynamic> collection = new
{
column1 = "1", column2 = "name", column3= "somevalue"
},
new
{
column1 = "2", column2 = "name2", column3= "somevalue2"
},
new
{
column1 = "3", column2 = "name3", column3= "somevalue3"
}
und so weiter....Die Anzahl der Spalten in der dynamischen Typen können auch variieren.Keine der Säulen mehr oder weniger.
Nun, wenn ich suchen will, das IEnumerable-Auflistung für z.B. somevalue2, brauche ich die folgenden Informationen
Gefunden in Zeile 2 (Angenommen, column1 ist immer Primärschlüssel) in der Spalte "spalte2".
Was wäre der beste Weg, um zu übersetzen, die diese dynamische Sammlung in eine Daten-Struktur (.NET-Liste/Sammlung/Hashtable etc.) und der beste Weg, um die Abfrage der Informationen aus der Kollektion. Die Kollektion wird bei den meisten wird eine Seite von Daten (25 Zeilen).
Alle code-Schnipsel und Daten-Strukturen zu tun, eine super-schnelle, effiziente Art und Weise der Suche der Daten geschätzt werden. Angenommen der Suchbegriff ist "enthält" - match im Gegensatz zu einem perfect match.
- "super schnell" und "dynamisch" nicht erscheinen meist im gleichen Kontext 🙂
- Müssen Sie eine Abfolge von
dynamic
s? Es scheint wie eine Sequenz von string-arrays dienen würde Ihnen viel besser. - Dies ist die Struktur der Daten und ich habe keine Kontrolle zu verändern.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese sind anonyme Typen anonyme Typen sind eine compiler-Funktion, so dass layout ist Feste starre zur compile-Zeit, so dass Sie nicht gehen, zu variieren. Ich würde vorschlagen: nicht verwenden
dynamic
. Zum Beispiel:die alle stark typisiert und gut definiert. Sie können reguläre Operationen, zum Beispiel:
wieder, alle statisch typisierte.
Wenn Sie möchten, um alle Spalten zu suchen, würde dann ich vorschlagen, so etwas wie ein Wörterbuch ist besser:
Da kann man dann schaut einfach auf
.Values.Contains(...)
Edit: mit dem Kommentar ich denke ich verstehe es ganz deutlich; ich bin Malte eine undurchsichtige Methode zurückgibt
IEnumerable<dynamic>
eigentlich POCO-Typen (nicht dynamischen Typen) und wir möchten zu prüfen die string-Mitglieder (willkürliche Namen) für ein Spiel. Wir sollten in der Lage sein, das zu tun, mit nachdenken, aber FastMember wird es viel schneller:dynamic
ist, dass Sie absolut nicht verwenden Sie reflektion, weildynamic
und Reflexion sind die genauen gegenüber Modelle. Wenn der code tatsächlich nurobject
, gut definierten Klassen, dann du kannst tun Sie es, aber Sie wohl, Sie sollte nicht sagen, es istdynamic
. Also: wiedynamic
ist es... ist es tatsächlichdynamic
? (also könnte es sein, mitExpandoObject
oder ähnliches drunter). Oder ist es nur Objekte?Wenn Sie wirklich wollen, dass Sie dynamische Objekte mit unterschiedlichen Spalten, die in jedem Element, können Sie erklären es wie folgt:
Umwandlung einer Liste ist einfach:
Suche nach einem Element ist ein wenig komplexer, da die Eigenschaften nicht existieren kann:
Ich weiß nicht, was genau verbirgt sich unter Ihrer IEnumerable, aber vor kurzem hatte ich-Suche Ergebnisse zurückgegeben, die von Dapper aus einigen Abfrage zurückgegeben wurden als IEnumerable der dynamischen (das ist, wie stieß ich auf diese Frage).
In meinem Fall die Lösung war, ließ meine
als
aber ich vermute, es geht nur um die Arbeit für die abgerufenen Daten durch dapper wie:
Für dieses bestimmte problem so etwas funktionieren könnte (noch nicht getestet):
Ich habe keine Ahnung, wie schnell würde das funktionieren, aber ich hoffe es hilft dir (oder jemand, zu sehen, dass diese Frage veröffentlicht wurde, sind eine Weile her).