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