Ist es möglich, die Abfrage der Liste der ExpandoObject?

Frage ich mich, ob es möglich ist, ExpandoObject-Abfrage mit regulären LINQ? Grund ist, dass ich dynamische ExpandoObject, aber ich brauche, um einige Abfragen, bevor ich den pass weiter.

Es hat einige Eigenschaften, die immer bleiben, z.B. Id, Notes aber auch einige dynamische Eigenschaften, die ich nicht kontrollieren kann.

Hier ist, wie meine Liste aussieht

[
  {
    "Id": 1,
    "FileId": 1,
    "Notes": "",
    "1": "12.02.1991"
  },
  {
    "Id": 2,
    "FileId": 2,
    "Notes": "",
    "1": "12.02.1991"
  }
]

Code

Wie Sie sehen können, habe ich meine statische Elemente und dann I stellen Sie sicher, dass jedes Element dynamische Schlüssel geworden, der Element-Eigenschaften. In diesem Beispiel 1 ist der Schlüssel und die 12.02.1991 ist Wert

var generatedItems = new List<object>();

foreach (var item in items)
{
    var modifiedItem = new List<KeyValuePair<string, object>>
    {
        new KeyValuePair<string, object>("Id", item.Id),
        new KeyValuePair<string, object>("FileId", item.FileId),
        new KeyValuePair<string, object>("Notes", item.Notes)
    };
    modifiedItem.AddRange(item.Fields.Select(field => new KeyValuePair<string, object>(field.Key, field.Value)));

    generatedItems.Add(ConvertToExpandoObjects(modifiedItem)); //Here I construct object from key/value pairs
}

return generatedItems; //Is it possible to query this thing?

Ich glaube nicht, dass dies relevant ist, aber hier ist mein ConvertToExpandoObjects funciton.

public static dynamic ConvertToExpandoObjects(IEnumerable<KeyValuePair<string, object>> pairs)
{
    IDictionary<string, object> result = new ExpandoObject();
    foreach (var pair in pairs)
        result.Add(pair.Key, pair.Value);
    return result;
}

Versuchte ich einfach etwas tun, wie generatedItems.Where(x => x.); aber offensichtlich gibt es mir nichts zu arbeiten, da Sie nicht wissen, dass diese Objekte haben Id etc..

So ist es möglich, abzufragen und wenn ja, dann wie?

InformationsquelleAutor Stan | 2013-09-11
Schreibe einen Kommentar