0

我想DataTable根据条件使用 sum 或 average 将 s 合并到列表中。例如:

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;
}

将所有数据表视为完全相同但不同的值,因为它们是来自相似模式但不同数据中心的表。谢谢。

4

2 回答 2

1

我会做

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;
}

我希望这有帮助。

编辑。您可以将一个Actionin 传递给该方法并在foreach块中使用它来执行您想要的操作。

于 2013-06-04T21:46:39.753 回答
0

您的问题太模糊,无法提供任何实际代码,但您想做一个 LINQ Join。它的工作原理与 SQL 连接大致相同。这个问题显示了查询和方法语法中的连接如何使用方法语法在 linq to sql 中进行连接?您也可以在此处查看 msdn 文档;http://msdn.microsoft.com/en-us/library/bb311040.aspx

于 2013-06-04T21:42:00.930 回答