You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何将List<object>转换为List<Node>?

解决方法

先看你代码里的明显错误:强制转换时写错了类型名,应该用(Node)而不是(nodes)(小写的nodes是你要声明的变量名,不是类型)。

根据你的场景,分两种情况处理:

1. 集合元素本身就是Node实例

如果Element.objects里的每个object实际上都是Node对象,修正转换代码即可:

List<Node> nodes = objects.Select(s => (Node)s).ToList();

要是担心集合里混有非Node类型的元素,推荐更安全的写法,避免抛出异常:

List<Node> nodes = objects.Select(s => s as Node)
                          .Where(node => node != null)
                          .ToList();

2. 集合元素是其他类型,需要属性映射

如果objects里的元素是别的类实例,需要把它的属性值映射到Node上。比如假设原对象有Id属性,写法如下:

// 未知类型时用反射取值
List<Node> nodes = objects.Select(s => new Node
{
    id = (long)s.GetType().GetProperty("Id").GetValue(s)
}).ToList();

// 已知原类型时,直接强转更高效
List<Node> nodes = objects.Select(s =>
{
    var source = s as YourSourceType;
    return source != null ? new Node { id = source.Id } : null;
}).Where(node => node != null).ToList();

内容的提问来源于stack exchange,提问作者Nguyễn Hoài Nam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:45:40