我正在寻找一种最简单的方法来将两个DataTable约束在列名上...
这是我的代码:
DataTable productsAllColums = ....;
DataTable productsJustColumnsToView = ...;
// they both imported from db and both have same stucture
for (int i = 0; i < productsAllColums.Columns.Count; i++)
{
for (int k = 0; k < productsJustColumnsToView.Columns.Count; k++)
{
if (productsAllColums.Columns[i].ColumnName == productsJustColumnsToView.Columns[k].ColumnName)
break;
else
productsAllColums.Columns.RemoveAt(i);
}
}
此解决方案实际上并不起作用...
更新更多示例:
DataTable产品所有列都有列(名称):col1,col2,col3,col4,col5 ....从ab到col60
DataTable产品JustColumnsToView具有(名称)col3,col 14,col22
我所有的数据都已经存在于productsAllColums中,所以我的想法...只需删除客户不希望看到的列;-)
答案 0 :(得分:0)
要使表的列数受限,可以使用DataView.ToTable方法。 但是,如果您不需要其他数据,也许值得重构,不要首先选择它们?
答案 1 :(得分:0)
我现在有一个解决方案:
DataTable productsAllColums = ....;
DataTable productsJustColumnsToView = ...;
bool columnOK;
for (int i = productsAllColums.Columns.Count - 1; i >= 0; i--)
{
columnOK = false;
for (int k = 0; k < productsJustColumnsToView.Columns.Count; k++)
{
if (productsAllColums.Columns[i].ColumnName == productsJustColumnsToView.Columns[k].ColumnName)
{
columnOK = true;
break;
}
}
if (!columnOK)
productsAllColums.Columns.RemoveAt(i);
}
我真的希望有一个更优雅的解决方案...但是现在也可以很好地工作了:-)