Подобный ответ dbaseman (и комментарий AKX в) Я бы использовать Cast
:
IEnumerable<MyClass> vats = here.All().Cast<MyClass>();
Вам потребуется using
директиву LINQ:
using System.Linq;
в верхней части вашего файла. Похоже, что у вас этого нет, если метод Select
не распознается.
Обратите внимание, что это предполагает, что каждое значение действительно является ссылкой MyClass
.
EDIT: Если вы хотите, чтобы иметь возможность доступа к значениям по индексу, я бы рекомендовал использовать ToList
:
List<MyClass> vats = here.All().Cast<MyClass>().ToList();
Хотя ToArray
будет работать тоже, я лично одобряю списки более массивов в большинстве случаев, так как они более гибкие.
EDIT: Похоже, что ваши результаты на самом деле полны ExpandoObject
. Вам нужно будет создать новый экземпляр MyClass
из каждого элемента, например.
List<MyClass> vats = here.All()
.Select(item => new MyClass(item.Name, item.Value))
.ToList();
или, возможно:
List<MyClass> vats = here.All()
.Select(item => new MyClass {
Name = item.Name,
Value = item.Value,
})
.ToList();
Это только пример, который я не ожидал бы работать сразу - мы не можем сделать лучше, чем, как мы ничего не знаем о том, как ваши результаты действительно возвращаются.
Звучит так, будто вы находитесь здесь над головой, боюсь.
Как все() реализовано? – Tigran
@ Тигран Вот он. Посмотрите на файл Massive.cs. https://github.com/robconery/massive –
Любая причина, по которой вы не можете сохранить ее «динамической» в своем коде? –