public static void GroupDataRows(IEnumerable <DataRow> source, List <DataTable> destination, string[] groupByFields, int fieldIndex, DataTable schema) { if (fieldIndex >= groupByFields.Length || fieldIndex < 0) { DataTable dataTable = schema.Clone(); foreach (DataRow dataRow in source) { DataRow row = dataTable.NewRow(); row.ItemArray = dataRow.ItemArray; dataTable.Rows.Add(row); } destination.Add(dataTable); } else { foreach (IEnumerable <DataRow> source1 in source.GroupBy <DataRow, object>((Func <DataRow, object>)(o => o[groupByFields[fieldIndex]]))) { LotteryCheck.GroupDataRows(source1, destination, groupByFields, fieldIndex + 1, schema); } ++fieldIndex; } }
public static void GroupDataRows(IEnumerable <DataRow> source, List <DataTable> destination, string[] groupByFields, int fieldIndex, DataTable schema) { if (fieldIndex >= groupByFields.Length || fieldIndex < 0) { DataTable dataTable = schema.Clone(); foreach (DataRow current in source) { DataRow dataRow = dataTable.NewRow(); dataRow.ItemArray = current.ItemArray; dataTable.Rows.Add(dataRow); } destination.Add(dataTable); return; } IEnumerable <IGrouping <object, DataRow> > enumerable = from o in source group o by o[groupByFields[fieldIndex]]; foreach (IGrouping <object, DataRow> current2 in enumerable) { LotteryCheck.GroupDataRows(current2, destination, groupByFields, fieldIndex + 1, schema); } fieldIndex++; }