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 配列を Object 配列に追加できないことです。これは可能だと思うかもしれませんが、そうではありません。これを共分散と呼びます。

オブジェクト配列に値を追加する前に、まずすべての値をオブジェクトにキャストする必要があります。これは、Linq を使用して 1 行で実行できます。

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

おそらくこの行と関係がthis.comboBox2.Items.AddRange(users.ToArray());あるので、null 可能なint32?型を使用せずにこれを行うことはできますか? その場合は、汎用オブジェクトを使用する必要があり、機能するはずです。

于 2013-09-24T13:20:35.033 に答える