Konvertieren Sie anonyme Art in Klasse
Bekam ich einen anonymen Typ in einer Liste anBook:
var anBook=new []{
new {Code=10, Book ="Harry Potter"},
new {Code=11, Book="James Bond"}
};
Ist möglich, es zu konvertieren, um eine Liste mit der folgenden definition von clearBook:
public class ClearBook
{
int Code;
string Book;
}
durch direkte Umwandlung, D. H., ohne die Schleife durch anBook?
InformationsquelleAutor der Frage Graviton | 2009-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, Sie könnte verwenden:
aber Nein, es ist keine direkte Konvertierung unterstützen. Natürlich werden Sie brauchen, um hinzuzufügen, Zugriffsmethoden, etc. (nicht, dass die Felder öffentlich) - ich würde raten:
Natürlich die andere option ist, um zu starten mit den Daten wie Sie es wollen:
Gibt es auch Dinge, die Sie tun könnten, um die Zuordnung der Daten mit Reflexion (vielleicht mit einem
Expression
zur compile-und cache-Strategie), aber es ist wahrscheinlich nicht Wert es.InformationsquelleAutor der Antwort Marc Gravell
Wie Marc sagt, es kann getan werden, mit Reflexion und Ausdruck der Bäume... und wie der Zufall es will, gibt es eine Klasse, in der MiscUtildie genau das macht. Dennoch, mit Blick auf Ihre Frage näher, es klingt wie Sie anwenden möchten, um diese Umwandlung einer Kollektion (array, Liste oder was auch immer) ohne looping. Das kann nicht möglicherweise Arbeit. Du bist der Konvertierung von einem Typ in einen anderen - es ist nicht so, können Sie eine Referenz auf die anonyme Art, als ob es ein Verweis auf ClearBook.
Um ein Beispiel zu geben, wie die PropertyCopy Klasse funktioniert aber, Sie würden einfach brauchen:
InformationsquelleAutor der Antwort Jon Skeet
Was über diese Erweiterung? einfache nennen .ToNonAnonymousList auf Ihre anonymen Typ..
InformationsquelleAutor der Antwort Christian Muggli