我正在尝试使用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;
}
我知道这可能是一个相当简单的解决方案,但我现在正在画一个空白。有帮助吗?
答案 0 :(得分:2)
问题是您无法将Int数组添加到Object数组。虽然你可能认为这应该是可能的,但事实并非如此。这称为协方差。
在将对象添加到对象数组之前,应首先将所有值强制转换为对象。您可以使用Linq在一行中执行此操作:
this.comboBox2.Items.AddRange(users.Cast<object>().ToArray());
答案 1 :(得分:0)
如果不使用null able this.comboBox2.Items.AddRange(users.ToArray());
类型,可以使用此行int32?
执行此操作吗?如果是这样,你应该使用通用对象,它应该可以工作。