将值添加到Row ItemArray

pro*_*ton 0 c#

我正在使用一些DataRow和它,一些ItemArray.

我知道如何将值传入ItemArray,但是当我创建一个新Row时,我不知道如何设置值.

所以我尝试了这个:

                    DataRow newRow = vDsMod.Tables[0].NewRow();
                    newRow.ItemArray[0] = "".ToArray();
                    newRow.ItemArray[1] = "".ToArray();
                    newRow.ItemArray[2] = "Employee".ToArray();
                    newRow.ItemArray[3] = "".ToArray();
                    vDsMod.Tables[0].Rows.Add(newRow);
Run Code Online (Sandbox Code Playgroud)

要么

                    DataRow newRow = vDsMod.Tables[0].NewRow();
                    newRow.ItemArray.SetValue("", 0);
                    newRow.ItemArray.SetValue("", 1);
                    newRow.ItemArray.SetValue("Employee", 2);
                    newRow.ItemArray.SetValue("", 3);
                    vDsMod.Tables[0].Rows.Add(newRow);
Run Code Online (Sandbox Code Playgroud)

但是我只在ItemArray中得到空字段.值0,1,3可以为空,并且由于其他行的ItemArray的长度为4,我还设置了4个值.

我怎么能做我想做的事?

Tim*_*ter 7

ItemArray返回object[]包含所有字段的内容.通过索引访问它:

newRow.ItemArray[0] = "".ToArray();
Run Code Online (Sandbox Code Playgroud)

您正在访问单个字段并指定新值.但你分配一个char[]因为你使用String.ToArray(),这是毫无意义的.

相反,我会使用强类型SetField方法,它也支持可空类型:

DataRow newRow = vDsMod.Tables[0].Rows.Add();
newRow.SetField(0, ""); 
newRow.SetField(1, ""); 
newRow.SetField(2, "Employee"); 
newRow.SetField(3, ""); 
Run Code Online (Sandbox Code Playgroud)

随着Rows.Add();DataRow已添加.这是一个品味的问题,是否使用DataTable.NewRow()和以后手动或添加它DataTable.Rows.Add().