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

能否通过含RecordId属性的Record列表枚举初始化int类型List?

关于用对象枚举初始化int类型List的问题

嘿,这个问题我来给你掰扯清楚~你想从List<Record>里提取所有RecordId来初始化List<int>的思路是对的,但你写的那行代码可没法实现需求,甚至还会出问题,我给你拆解下:

你的写法为啥不行?

records.GetEnumerator().Current.RecordId这个操作有两个大问题:

  • 刚获取枚举器的时候,Current属性是未定义状态,必须先调用MoveNext()方法才会指向第一个元素,直接访问会出问题;
  • 就算你调用了MoveNext(),这行代码也只能拿到第一个元素的RecordId,没法遍历整个列表提取所有ID。

正确的实现方式

这里给你两种常用的靠谱方法:

1. 用LINQ(最简洁推荐)

只要引用System.Linq命名空间,一行代码就能搞定,它会自动遍历所有Record对象并提取RecordId:

// 确保records不为null哦
List<int> recordIds = records.Select(record => record.RecordId).ToList();

2. 手动foreach循环(适合不想用LINQ的场景)

如果不想依赖LINQ,用基础的循环也能实现:

List<int> recordIds = new List<int>();
if (records != null) // 先做null检查避免报错
{
    foreach (var record in records)
    {
        recordIds.Add(record.RecordId);
    }
}

额外提醒

一定要注意records是否为null!如果records是null,直接调用Select或者foreach都会抛出NullReferenceException。如果需要处理null情况,可以用空合并运算符优化:

List<int> recordIds = records?.Select(r => r.RecordId).ToList() ?? new List<int>();

这样就算records是null,也会返回一个空的List<int>,不会报错。

内容的提问来源于stack exchange,提问作者samus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:02:05