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

如何动态声明decimal数组并添加值?遇Append方法报错求解

问题解决:C#动态构建decimal数组并传递给Chart.js

问题根源

decimal[]是固定长度的数组,本身没有Append方法;你调用的Append是LINQ扩展方法,它不会修改原数组,而是返回一个新的IEnumerable<decimal>,且你没有将返回结果重新赋值给数组。另外,1011.11默认是double类型,直接添加到decimal集合会触发隐式转换,建议加m后缀明确标记为decimal类型。

解决方案

方案1:用List<decimal>动态添加(推荐,适合频繁添加元素场景)

List<T>是专为动态集合设计的类型,添加元素性能更高,最后只需转成数组即可:

// 初始化动态集合
var dataList = new List<decimal>();
// 添加decimal类型元素(加m后缀)
dataList.Add(1011.11m);
dataList.Add(2022.22m);
// 转成decimal[]用于Chart.js的匿名类型
decimal[] data = dataList.ToArray();

方案2:用LINQ的Append链式构建(适合少量元素添加)

如果只是少量元素添加,可以用LINQ的Append方法,但每次都要将结果转成数组并重新赋值:

decimal[] data = new decimal[]{};
// Append返回新的IEnumerable,必须转成数组赋值回去
data = data.Append(1011.11m).ToArray();
// 链式添加更多元素
data = data.Append(2022.22m).Append(3033.33m).ToArray();

整合到Chart.js匿名类型的完整代码

以方案1为例,完整代码如下:

var dataList = new List<decimal>();
dataList.Add(1011.11m);
dataList.Add(2022.22m);
decimal[] data = dataList.ToArray();

Datasets = new[]
{
    new {
        label = "My First dataset",
        backgroundColor = "rgba(255, 99, 132, 0.5)",
        borderColor = "rgb(255, 99, 132)",
        data = data,
        fill = true,
    },
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:35:26