2012-12-13 122 views
-1

我有一个项目数组:字符串添加到项目阵列

dtProducts.Rows[i].ItemArray; 

我想一个字符串值追加到该数组的开头,然后整个阵列添加到另一个数据表。

我的项目阵列上使用.ToList()尝试,然后添加字符串值,但它给了我一个错误:

无法隐式转换类型“无效”到“System.Collections中。 Generic.List

var items = dtProducts.Rows[i].ItemArray.ToList(); 
items = items.Add("myString"); 

我在做什么错?

+2

'ItemArray'不是'DataRow []'。它是DataRow字段的数组。你究竟想要什么?追加到开头是相当模糊的(至少是因为你将它添加到最后)。你想设置DataRow的第一列值吗? –

+0

请原谅我误用术语。假设我的数组有10个对象,我想在索引0处添加一个额外的对象,并保持其余的对象不变。在我的OP中,我将它添加到最后,因为就我而言。 – Rivka

回答

3

正如杰森说,名单<>。新增是无效的方法,你应该删除assingment:

items.Add("myString"); 

如果你想在新项目是在列表的开始,使用插入:

items.Insert(0, "myString"); 
+0

谢谢伊戈尔,杰森。欣赏快速简单的答案。有时需要其他人指出显而易见的事实 - 我尝试了许多语法。 – Rivka

1

的C#List.Add()函数的地方增加了一个项目,它没有返回值,所以更换:

items = items.Add("myString"); 

与单纯

items.Add("myString"); 

应该解决您的问题

0

ItemArray不是DataRow[]。它是DataRow字段的数组。

我假设你想要将一个DataTable的所有字段复制到另一个DataTable,并用string填充第一列。

string[] stringToInsert = new[]{"myString"}; 
foreach(DataRow row1 in table1.Rows) 
{ 
    DataRow newRow = table2.Rows.Add(); 
    newRow.ItemArray = stringToInsert.Concat(row1.ItemArray).ToArray(); 
} 

(假设第二台具有table1.Column.Count + 1列)

0

要在列表的索引0添加一个项目,你需要创建一个新的列表,添加你的对象,然后遍历原始列表,添加对象,例如,

List<object> newList = new List<object>(); 
newList.add("myString"); 
foreach (object item in items) 
{ 
    newList.add(item); 
} 

add方法将对象添加到列表尾部(索引n + 1)。

+0

对Insert方法的好的调用 - 这甚至更好。 – Kevin