.Select(x => x.Instance)
действительно возвращает ...
на. NET Core 3.1. Можете ли вы убедиться, что содержимое переменной json
действительно соответствует вашим ожиданиям?
В частности,
jsonPhotos.Select(x => x.Instance);
работает должным образом, а
jsonPhotos.Select(x => x.SomeNonExistingProperty);
ничего не перечисляет / пустые значения.
Например, этот код печатает Instance A
, затем Instance B
, а затем ничего дважды:
var json = @"
{
""Photos"": [
{
""Instance"": ""Instance A"",
""Key"": ""...""
},
{
""Instance"": ""Instance B"",
""Key"": ""...""
}]
}";
var jsonObj = JsonConvert.DeserializeObject<dynamic>(json);
var jsonPhotos = jsonObj.Photos as IEnumerable<dynamic>;
var instances = jsonPhotos.Select(x => x.Instance);
foreach (var instance in instances)
{
Console.WriteLine(instance);
}
// In contrast, this one will print empty lines.
instances = jsonPhotos.Select(x => x.SomeNonExistingProperty);
foreach (string instance in instances)
{
Console.WriteLine(instance);
}
Я взял на себя смелость изменить десериализацию на dynamic
напрямую, но он также работает с исходный код из вопроса.