创建数据表 - c#

我有一个来自db的DataTable [具有5列],其中已合并了数据。
我需要在此组合表上调用group by并创建2个表...一个表具有groupedBy行,其他表具有项。
用C#代码最快的方法是什么?
另外,我在下面编写了为这两个表添加列的代码,对吗?

这是我的代码:

string colName = "ACCOUNT_ID"; 
var allRows = combinedTable.AsEnumerable();      

var accountRowGroups = allRows.GroupBy(row => row[colName]);

DataTable masterDataTable = new DataTable(); 
DataTable childPricesDataTable = new DataTable();

// Create the columns 
            DataColumnCollection pdCols = combinedTable.Columns; 
            for (int ndx = 0; ndx < pdCols.Count; ndx++) 
            { 
                string columnName = pdCols[ndx].ColumnName; 
                Type type = Type.GetType(pdCols[ndx].DataType.ToString());

                masterDataTable.Columns.Add(columnName, type); 
                childPricesDataTable.Columns.Add(columnName, type);

            }

参考方案

在这里看到类似的问题:How to merge multiple DataTable objects with group by with C# and concatinating duplicate rows?

我同意duffymo,它是用SQL而不是内存中的数据完成的。

但是,如果这不是一个选择:

您可以在两个数据表之间添加关系:http://msdn.microsoft.com/en-us/library/ay82azad(v=vs.71).aspx

然后,您可以在合并的数据表上运行分组依据:http://codecorner.galanter.net/2009/04/20/group-by-and-aggregates-in-net-datatable/

这是SQL团队的一个正确示例:
http://weblogs.sqlteam.com/davidm/archive/2004/05/20/1351.aspx

public static DataTable GROUPBY(DataTable Table, DataColumn[] Grouping, string[] AggregateExpressions, string[] ExpressionNames, Type[] Types)
        {

            if (Table.Rows.Count == 0)

                return Table;

            DataTable table = SQLOps.PROJECT(Table, Grouping);

            table.TableName = "GROUPBY";



            for (int i = 0; i < ExpressionNames.Length; i++)
            {

                table.Columns.Add(ExpressionNames[i], Types[i]);

            }



            foreach (DataRow row in table.Rows)
            {

                string filter = string.Empty;



                for (int i = 0; i < Grouping.Length; i++)
                {

                    //Determine Data Type        

                    string columnname = Grouping[i].ColumnName;

                    object o = row[columnname];

                    if (o is string || DBNull.Value == o)
                    {

                        filter += columnname + "='" + o.ToString() + "' AND ";

                    }

                    else if (o is DateTime)
                    {

                        filter += columnname + "=#" + ((DateTime)o).ToLongDateString()

                              + " " + ((DateTime)o).ToLongTimeString() + "# AND ";

                    }

                    else

                        filter += columnname + "=" + o.ToString() + " AND ";

                }

                filter = filter.Substring(0, filter.Length - 5);



                for (int i = 0; i < AggregateExpressions.Length; i++)
                {

                    object computed = Table.Compute(AggregateExpressions[i], filter);

                    row[ExpressionNames[i]] = computed;

                }

            }

            return table;

        }

jQuery DataTable TableTool在IE和Firefox中不起作用 - c#

我在MVC4 ASP.NET Web应用程序中使用Jquery DataTable TableTool。导出到Excel和PDF可以与Chrome完美配合。但是不能在IE和FireFox中使用。我的代码如下 dom: 'T<"clear">lfrtip', tableTools: { "sSwfP…

.NET C#Webbrowser填充输入,不带ID或类名 - javascript

我需要在网络浏览器中填写一个输入,但这不起作用。我认为必须使用name属性来完成,但是怎么做呢?foreach (HtmlElement login in webBrowser1.Document.GetElementsByTagName("input")) { if (login.GetAttribute("name"…

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

asp.net mvc中的对象数组数据始终为null - javascript

我需要通过json将对象数组发送到asp.net mvc 2,但是我在mvc控制器中没有得到null对象是这样的entries[1].date = "12/22/2014" entries[1].Ref = "0002" entries[1].Credit = "100" entries[2].da…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…