Интересно, можно ли запросить ExpandoObject с помощью обычного LINQ? Причина в том, что у меня есть динамический ExpandoObject, но мне нужно сделать несколько запросов, прежде чем я смогу пройти дальше.
У него есть некоторые свойства, которые всегда остаются, например. Id
, Notes
, а также некоторые динамические свойства, которыми я не могу управлять.
Вот как выглядит мой список из них
[
{
"Id": 1,
"FileId": 1,
"Notes": "",
"1": "12.02.1991"
},
{
"Id": 2,
"FileId": 2,
"Notes": "",
"1": "12.02.1991"
}
]
Код
Как видите, у меня есть свои статические элементы, а затем я удостоверяюсь, что динамические ключи каждого элемента становятся свойствами этого элемента. В этом примере 1
— ключ, а 12.02.1991
— значение
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?
Я не думаю, что это актуально, но вот моя функция ConvertToExpandoObjects.
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;
}
Я попытался просто сделать что-то вроде generatedItems.Where(x => x.);
, но, очевидно, мне не над чем работать, поскольку он не знает, что эти объекты имеют Id
и т. д.
Так можно ли его запросить и если да, то как?