如何使用C#.Net删除更多数据表列?
我有一个DataTable可能有更多列。但“NetAmount”、“TotalAmount”、“Destination”是数据表中始终存在的数据表列 在这里,我想从DataTable中删除三列,如“NetAmount”、“TotalAmount”和“Destination”,并获取DataTable中的其他列值 我像下面那样尝试,得到了想要的输出如何使用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
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。