dynamisch erstellen anonymes Objekt aus der Liste c # Werte

Ich habe eine Liste (oder Array) von Strings, die ich will, um dynamisch von einem anonymen Objekt erstellen. Wie mache ich das?

var dataSet = new DataSet();
dataSet.ReadXml(@"");
var dataTable = dataSet.Tables[0];
var dataRow = dataTable.Rows[0];    

var keys = new List<string> {"Column1","Column2"};
var result = new {keys[0] = dataRow[keys[0]], keys[1] = dataRow[keys[1]]}

So dass die Liste namens „Schlüssel“ wird außerhalb dieser Methode erstellt werden und 1 bis viele Werte enthalten. Ich habe versucht, ein Wörterbuch und Looping durch die Liste und das Hinzufügen von Schlüssel / Wert-Paare in das Wörterbuch zu schaffen, aber dann könnte ich nicht herausfinden, wie das Wörterbuch zurück zu einem anonymen Typ zu konvertieren. Ich habe auch mit den expando Objekten experimentiert, aber das schien mich nicht mehr weiter zu erhalten.

Ich muss einen anonymen Typ als Ergebnis dieses Verfahrens in der Lage zurückkehren wird mit der GroupBy-Klausel einer LINQ-Abfrage verwendet werden.

Hier ist die Methode, die ich hatte, um dynamisch das Wörterbuch zu erstellen:

    public object Key(DataRow dataRow, List<String> keys)
    {
        var dictionary = new IDictionary<string, object>;
        foreach (string key in keys)
        {
            dictionary.Add(key, dataRow[key]);
        }
        return dictionary;
    }

Hier ist meine LINQ-Abfrage:

var duplicates = dataTable.AsEnumerable().GroupBy(r => Key(r, keys)).Where(c => c.Count() > 1).ToList();

Die GroupBy-Klausel funktioniert, wenn ich in einem anonymen Typ aus dem Key () -Methode codieren. Im Grunde brauche ich nur die GroupBy-Klausel dynamisch auf die Werte in der Schlüsselliste Satz zu stellen sind.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage