错误:参数 1:无法从 'int?[]' 到“对象 []”

本文关键字:对象 参数 错误 int | 更新日期: 2023-09-27 18:32:30

我正在尝试使用Visual Studio 2012,MVC 4,C#和内置的报告系统创建报告。我正在使用存储过程来合并和连接大约 13 个表,我知道这只是我有一个脑死亡的时刻,但是当我尝试将数组从存储过程填充到 ddl 中时,我遇到了以下错误的问题:

Argument 1: cannot convert from 'int?[]' to 'object[]'

这是代码:

public frm100percentQA()
{
        InitializeComponent();
        this.comboBox2.Visible = true;
        this.comboBox2.Items.Clear();
        List<Int32?> users = (from c in new NHISLINQ.NHISLINQDataContext().sp100PercentlQualityAssurance() where c.UserID != '0' select c.UserID).ToList();
        this.comboBox2.Items.Add("<---Select UserID--->");
        this.comboBox2.Items.Add("Select All");
        this.comboBox2.Items.AddRange(users.ToArray());
        this.comboBox2.SelectedIndex = 0;
}

我知道这可能是一个相当简单的解决方案,但我现在画了一个空白。 有什么帮助吗?

错误:参数 1:无法从 'int?[]' 到“对象 []”

问题是你不能将 Int-array 添加到 Object-array。尽管您可能认为这应该是可能的,但事实并非如此。这称为协方差。

在将所有值添加到对象数组之前,应首先将所有值强制转换为对象。您可以在一行中使用 Linq 执行此操作:

this.comboBox2.Items.AddRange(users.Cast<object>().ToArray());
可能

与这一行有关this.comboBox2.Items.AddRange(users.ToArray());您可以在不使用 null able int32? 类型的情况下执行此操作吗?如果是这样,您应该使用通用对象,它应该可以工作。