2013-09-24 63 views
1

我試圖用Visual Studio 2012,MVC 4,C#和內置報告系統創建報告。我正在使用存儲過程來聯合和加入約13個表我知道這是我只是有一個大腦死亡的時刻,但因爲我想從一個存儲過程填充數組到一個ddl,我遇到問題以下錯誤:錯誤:參數1:無法從'int?[]'轉換爲'object'[

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

你試過在查詢解析'c.UserID'到'int'?該錯誤表明,您的UserId不是一個類型整數在這一點和時間 – Marco

回答

2

問題是你不能將一個Int數組添加到一個Object數組中。雖然你可能認爲這應該是可能的,但事實並非如此。這被稱爲協變。

在將它們添加到對象數組之前,您應該先將所有值轉換爲對象。你可以這樣做,在一行中使用LINQ:

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

這工作!我知道我必須拋出它,只是一個腦子死的時刻。謝謝! –

0

可能與此行有關this.comboBox2.Items.AddRange(users.ToArray());你可以做到這一點,而不使用空能int32?類型?如果是這樣,你應該使用一個通用的對象,它應該工作。

+1

是一個答案? – paqogomez

+0

很好的捕獲。我想我忘了添加它應該是什麼,如果它不需要是int32 ... oops,添加它。 –

0
protected override void Seed(ProductContext context) 
     { 
     ForEach(c => context.Categories.Add(c)); 
     ForEach(p => context.Products.Add(p)); 
     } 
Severity Code Description Project File Line Suppression State 
Error CS1503 Argument 1: cannot convert from 'object' to 'WingtipToys.Models.Category' Wingertoys C:\Users\nadal\onedrive\documents\visual studio 2015\Projects\Wingertoys\Wingertoys\Models\ProductDatabaseInitializer.cs 11 Active 
+0

爲了改進這個答案,你可以添加一些文字描述你在做什麼。 –

相關問題