C# 错误:参数1:无法从“int?[]”转换为“object[]”

C# 错误:参数1:无法从“int?[]”转换为“object[]”,c#,sql,linq,asp.net-mvc-4,C#,Sql,Linq,Asp.net Mvc 4,我正在尝试使用Visual Studio 2012、MVC 4、C和内置报告系统创建一个报告。我正在使用一个存储过程来联合和连接大约13个表,我知道这是我的大脑死机时刻,但当我试图将一个数组从存储过程填充到ddl中时,我遇到了以下错误: Argument 1: cannot convert from 'int?[]' to 'object[]' 代码如下: public frm100percentQA() { InitializeComponent(); thi

我正在尝试使用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;
}

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

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

问题是您不能将Int数组添加到对象数组中。虽然你可能认为这是可能的,但事实并非如此。这叫做协方差

在将所有值添加到对象数组之前,应首先将其强制转换为对象。您可以在一行中使用Linq实现这一点:

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

您是否尝试过在查询中将c.UserID解析为int?错误表明,此时您的用户ID不是一个整数类型,并且timenice捕获。我想我忘了添加它应该是什么,如果它不需要是int32…哦,添加了它。这很有效!我知道我必须投下它,只是一个大脑死亡的时刻。非常感谢。