3

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

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

4

2 回答 2

4

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

在将它们添加到对象数组之前,您应该首先将所有值转换为对象。您可以在一行中使用 Linq 来做到这一点:

this.comboBox2.Items.AddRange(users.Cast<object>().ToArray());
于 2013-09-24T13:21:15.740 回答
0

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

于 2013-09-24T13:20:35.033 回答