我有一个项目数组:
dtProducts.Rows[i].ItemArray;
我正在尝试将单个字符串值附加到此数组的开头,然后将整个数组添加到另一个DataTable中。
我尝试在item数组上使用.ToList(),然后添加字符串值,但它给了我一个错误:
无法将类型'void'隐式转换为'System.Collections.Generic.List
var items = dtProducts.Rows[i].ItemArray.ToList();
items = items.Add("myString");
我做错了什么?
答案 0 :(得分:3)
正如Jason所说,List<> .Add是一个void方法,你应该删除这个assingment:
items.Add("myString");
如果您希望新项目位于列表的开头,请使用Insert:
items.Insert(0, "myString");
答案 1 :(得分:1)
C#List.Add()函数添加了一个项目,它没有返回值,因此替换:
items = items.Add("myString");
只需
items.Add("myString");
应该解决您的问题
答案 2 :(得分: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列)
答案 3 :(得分:0)
要在列表的索引0处添加项目,您需要创建一个新列表,添加您的对象,然后迭代原始列表,从中添加对象,例如。
List<object> newList = new List<object>();
newList.add("myString");
foreach (object item in items)
{
newList.add(item);
}
add方法将对象添加到列表的尾部(索引n + 1)。