2013-09-24 66 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

为了改进这个答案,你可以添加一些文字描述你在做什么。 –

相关问题