-1

我有一个项目数组:

dtProducts.Rows[i].ItemArray;

我正在尝试将单个字符串值附加到该数组的开头,然后将整个数组添加到另一个 DataTable。

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

无法将类型“void”隐式转换为“System.Collections.Generic.List”

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

我究竟做错了什么?

4

4 回答 4

3

正如杰森所说, List<>.Add 是一个 void 方法,你应该删除assingment:

items.Add("myString");

如果您希望新项目位于列表的开头,请使用 Insert:

items.Insert(0, "myString");
于 2012-12-13T17:14:08.890 回答
1

C# List.Add() 函数在原地添加一个项目,它没有返回值,所以替换:

items = items.Add("myString");

简单地

items.Add("myString");

应该解决你的问题

于 2012-12-13T17:09:56.487 回答
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 列)

于 2012-12-13T17:14:20.883 回答
0

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

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

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

于 2012-12-13T17:15:34.833 回答