gpt4 book ai didi

c# - 将匿名类型列表转换为动态对象列表

转载 作者:可可西里 更新时间:2023-11-01 03:03:48 25 4
gpt4 key购买 nike

为什么我不能转换 List<AnonymousObject>List<dynamic> ?我有以下代码:

var datasource = someList.Select(o => new { x = o.A, y = o.B });
dgvSomeGridView.DataSource = datasource.ToList();
dgvSomeGridView.DataBind();

然后我访问 GridView.DataSource使用以下代码:

var ds = ((List<dynamic>)dgvSomeGridView.DataSource);
....

但它在我将其转换为 List<dynamic> 的那一行抛出错误,它说:

Unable to cast object of type System.Collections.Generic.List'1[<>f__AnonymousType0'8[System.Int32,System.String]] to type System.Collections.Generic.List'1[System.Object].

为什么我不能将匿名类型列表转换为 dynamic ,或者正如错误所说的 object类型?我该如何解决这个问题?

我的代码在 C# 中,框架 4.0,在 VS2010 Pro 中构建,平台是 ASP.NET。

请帮助,在此先感谢。

最佳答案

List<T>是不变的,不是协变的,所以你必须转换IEnumerable<dynamic>支持协变:

var ds = ((IEnumerable<dynamic>)dgvSomeGridView.DataSource).ToList();

更多information about covariant

关于c# - 将匿名类型列表转换为动态对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com