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

如何在C#中高效将List<Thing>的属性转换为数组?

在C#中高效提取属性数组的方法

当然有啦!针对你要把List<Thing>里的Name和ID分别提取成string[]和int[]的需求,有两种高效的实现方式,完全适配Oracle数组绑定的场景:

1. 简洁首选:LINQ 方式

如果你追求代码的简洁性和可读性,LINQ的Select方法是最方便的选择,而且内部已经做了优化,大部分场景下性能完全够用。记得先引用System.Linq命名空间哦:

using System.Linq;

// 提取Name数组
string[] thingNames = listOfThings.Select(t => t.Name).ToArray();
// 提取ID数组
int[] thingIDs = listOfThings.Select(t => t.ID).ToArray();

这种写法一行搞定,逻辑清晰,日常开发用它完全没问题。

2. 极致性能:手动循环遍历

如果你的listOfThings数据量特别大(比如百万级以上),想要追求极致性能,可以用手动循环的方式——只需要遍历List一次,同时填充两个数组,避免LINQ两次遍历带来的微小开销:

int itemCount = listOfThings.Count;
string[] thingNames = new string[itemCount];
int[] thingIDs = new int[itemCount];

for (int i = 0; i < itemCount; i++)
{
    Thing currentThing = listOfThings[i];
    thingNames[i] = currentThing.Name;
    thingIDs[i] = currentThing.ID;
}

这种方式直接操作数组索引,没有委托调用的额外消耗,在大数据量场景下性能优势会更明显。

小提示(适配Oracle数组绑定)

拿到这两个数组后,记得在设置Oracle参数时,把OracleParameter的ArrayBindCount属性设置为数组的长度,这样Oracle就能正确识别数组绑定啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:15:07