错误:参数1:无法从'int?[]'转换为'object []'

时间:2013-09-24 13:17:30

标签: 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();
        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;
}

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

2 个答案:

答案 0 :(得分:2)

问题是您无法将Int数组添加到Object数组。虽然你可能认为这应该是可能的,但事实并非如此。这称为协方差。

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

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

答案 1 :(得分:0)

如果不使用null able this.comboBox2.Items.AddRange(users.ToArray());类型,可以使用此行int32?执行此操作吗?如果是这样,你应该使用通用对象,它应该可以工作。