[英]Merging DataTables with Condition
我想根据条件使用总和或平均值在列表中合并DataTable
。 例如:
private DataTable getData(List<DataTable> datas, string[] KeyColumnNames, string valueCol)
{
List<DataTable> dataTables = datas;
//if datas has 3 dataTables in it : dt1, dt2, dt3
// then I want to create another dataTable dtAll which will have the sum of
// valueCol of all three datatables for the row which will be conditioned using
// KeyColumnNames (can be multiple Primary keys)
return dataTable;
}
将所有数据表视为完全相同但值不同,因为它们是来自相似架构但数据中心不同的表。 谢谢。
我会做
List<DataTable> dataTableList = dtList;
DataTable unionDataTable = new DataTable();
for(int i = 0; i < dtList.Count; i++)
unionDataTable = Union(unionDataTable, dtList[i], "UnionDataTable");
Union
方法是由类似以下内容的方法定义的
public static DataTable Union(DataTable First, DataTable Second, string strReturnedTableName)
{
// Result table.
DataTable table = new DataTable(strReturnedTableName);
// Build new columns.
DataColumn[] newcolumns = new DataColumn[First.Columns.Count];
for (int i = 0; i < First.Columns.Count; i++)
newcolumns[i] = new DataColumn(First.Columns[i].ColumnName, First.Columns[i].DataType);
// Add new columns to result table.
table.Columns.AddRange(newcolumns);
table.BeginLoadData();
// Load data from first table.
foreach (DataRow row in First.Rows)
table.LoadDataRow(row.ItemArray, true);
// Load data from second table.
foreach (DataRow row in Second.Rows)
table.LoadDataRow(row.ItemArray, true);
table.EndLoadData();
return table;
}
我希望这有帮助。
编辑。 您可以将Action
传递给方法,并在foreach
块中使用它来执行所需的操作。
您的问题太含糊,无法提供任何实际代码,但您想执行LINQ Join
。 它的工作原理与SQL连接相同。 此问题显示查询和方法语法中的联接如何使用方法语法在linq中联接到sql? 您也可以在这里查看msdn文档; http://msdn.microsoft.com/en-us/library/bb311040.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.