与dbaseman的回答(以及AKX的评论)类似,我会使用Cast
:
IEnumerable<MyClass> vats = here.All().Cast<MyClass>()
不过,您需要使用using
指令来处理LINQ:
using System.Linq;
在你的文件顶部加入“using”语句。如果无法识别“Select”方法,则说明你还没有添加该语句。
请注意,这假设每个值确实是“MyClass”引用。
编辑:如果想通过索引访问这些值,建议使用“ToList”。
List<MyClass> vats = here.All().Cast<MyClass>().ToList()
虽然 ToArray
也可以使用,但在大多数情况下,我个人更喜欢使用列表而不是数组,因为它们更加灵活。
编辑:听起来你的结果实际上充满了 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();
这只是一个例子,我不指望它能立即奏效 - 因为我们对于你的结果实际返回方式一无所知,所以我们无法做得更好。
恐怕你在这里已经超出了自己的能力范围。