Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#.Net删除更多数据表列?_C#_Asp.net_Visual Studio 2008_Datatable - Fatal编程技术网

如何使用C#.Net删除更多数据表列?

如何使用C#.Net删除更多数据表列?,c#,asp.net,visual-studio-2008,datatable,C#,Asp.net,Visual Studio 2008,Datatable,我有一个DataTable可能有更多列。但“NetAmount”、“TotalAmount”、“Destination”是数据表中始终存在的数据表列 在这里,我想从DataTable中删除三列,如“NetAmount”、“TotalAmount”和“Destination”,并获取DataTable中的其他列值 我像下面那样尝试,得到了想要的输出 dtAttribute.Columns.Remove("NetAmount"); //dtAttribute is the Main DataTa

我有一个DataTable可能有更多列。但“NetAmount”、“TotalAmount”、“Destination”是数据表中始终存在的数据表列

在这里,我想从DataTable中删除三列,如“NetAmount”、“TotalAmount”和“Destination”,并获取DataTable中的其他列值

我像下面那样尝试,得到了想要的输出

  dtAttribute.Columns.Remove("NetAmount"); //dtAttribute is the Main DataTable
  dtAttribute.Columns.Remove("TotalAmount");
  dtAttribute.Columns.Remove("Destination");
  DataTable dtItem = dtAttribute.Copy();      

但它看起来非常幼稚和冗长。还有其他方法吗?请给出建议。

您的代码没有问题(除了在删除列后复制表——您确定这是您想要的吗?)

如果你想要更抽象的东西(而不是一次又一次地重复同一行),你可以考虑删除循环中的列:

var dtItem = dtAttribute.Copy();    // if you want to keep a copy of the original table

var toRemove = new string[] {"NetAmount", "TotalAmount", "Destination"};
foreach (col in toRemove)
    dtItem.Columns.Remove(col);

您的代码没有问题(除了删除列后复制表——您确定这是您想要的吗?)

如果你想要更抽象的东西(而不是一次又一次地重复同一行),你可以考虑删除循环中的列:

var dtItem = dtAttribute.Copy();    // if you want to keep a copy of the original table

var toRemove = new string[] {"NetAmount", "TotalAmount", "Destination"};
foreach (col in toRemove)
    dtItem.Columns.Remove(col);


与其删除列,不如先不将它们放在数据表中?

与其删除列,不如先不将它们放在数据表中?

确实有效吗?根据DataColumnCollection.Remove是一种
void
方法,即它不应返回值。请向我们展示您的真实代码,而不是看起来像您的代码的东西。您确定您从编译好的代码中获取了该示例吗?如果我没有错的话,Remove方法的类型是void。如果这是API提供的唯一方法,那么调用Remove 3次也不会太长/太幼稚。@Heinzi&Vijay:嗨,对这两种方法都很抱歉。我只是打字,没有真正通读我的代码。现在我编辑了我的问题。请看一看。@thevan:为什么在删除列后要复制一份?你确定这样行吗?根据DataColumnCollection.Remove是一种
void
方法,即它不应返回值。请向我们展示您的真实代码,而不是看起来像您的代码的东西。您确定您从编译好的代码中获取了该示例吗?如果我没有错的话,Remove方法的类型是void。如果这是API提供的唯一方法,那么调用Remove 3次也不会太长/太幼稚。@Heinzi&Vijay:嗨,对这两种方法都很抱歉。我只是打字,没有真正通读我的代码。现在我编辑了我的问题。请看一看。@thevan:为什么在删除列后要进行复制?我正在从后端获取数据表。我还需要这些列用于另一个目的。我有一个数据集,如何将其前半部分添加到数据表中。@SteveWellens我使用带有ExcelPackage(EPPlus)的数据表。我从后端获取数据表。我还需要这些列用于另一个目的。我有一个数据集,如何将其前半部分添加到DataTable中。@SteveWellens我使用DataTable with ExcelPackage(EPPlus)如果我想删除列0到9,该怎么办?@SearchForKnowledge:嗯,返回一个类型的值,DataColumnCollection有一个名为的方法。这有助于你自己回答问题吗?@Heinzi我试过了,所以假设我有四列,0,1,2,3。每次我迭代使用
RemoveAt()
时,它会删除所有其他列,但谢谢:)+1@SearchForKnowledge:删除行0后,(旧)行1、2、3将变为(新)行0、1、2。有两种明显的方法可以解决这个问题。你能猜出它们是什么吗?@SearchForKnowledge:没错!另一个选项是删除3,2,1,0而不是0,1,2,3。如果我想删除列0到9,该怎么办?@SearchForKnowledge:返回类型为的值,DataColumnCollection有一个名为的方法。这有助于你自己回答问题吗?@Heinzi我试过了,所以假设我有四列,0,1,2,3。每次我迭代使用
RemoveAt()
时,它会删除所有其他列,但谢谢:)+1@SearchForKnowledge:删除行0后,(旧)行1、2、3将变为(新)行0、1、2。有两种明显的方法可以解决这个问题。你能猜出它们是什么吗?@SearchForKnowledge:没错!另一个选项是删除3,2,1,0,而不是0,1,2,3。