Group By
GroupBy is used to group the identical rows of tabular data. For example, if a particular column has the same values in different rows, groupBy will group those rows.
When you apply GroupBy to a DataModel, it transforms it and creates a new DataModel.
Now, let's apply groupBy operation on the tabular data of a DataModel given below:
| Order Date | Country | Sales | Quantity | Shipping Cost | 
|---|---|---|---|---|
| 1/22/2011 | Australia | 59.724 | 6 | 27.43 | 
| 1/22/2011 | United States | 125.248 | 3 | 3.64 | 
| 1/22/2011 | Australia | 6.318 | 1 | 1.77 | 
| 1/24/2011 | Australia | 110.808 | 3 | 9.92 | 
| 1/24/2011 | United States | 40.08 | 6 | 4.31 | 
| 1/24/2011 | India | 59.25 | 5 | 4.27 | 
| 1/24/2011 | United States | 5.94 | 3 | 0.95 | 
| 1/26/2011 | India | 79.38 | 3 | 13.82 | 
| 1/26/2011 | India | 342.51 | 7 | 13.22 | 
The code to group the above tabular data with respect to the Country and Quantity column is shown below:
GroupColumn columnData = new GroupColumn {
    "Country",
    "Quantity"
};
DataModel groupModel = model.GroupBy(columnData);
In the above code:
- GroupColumn is a class.
 - columnData is the class object which holds information of the data to be grouped.
 - Country and Quantity are the column names from the above tabular data.
 - DataModel is a class.
 - groupModel is the object which holds the resultant data.
 
The output after running the above code looks like:
| Country | Quantity | 
|---|---|
| Australia | 6 | 
| United States | 6 | 
| Australia | 1 | 
| United States | 3 | 
| India | 3 | 
| India | 1 | 
If you want to perform GroupBy on a column of data type DateTime, you can use the DateGrouping enum of the class GroupColumn. Refer to the code below:
GroupColumn groupColumnSet = new GroupColumn {
    {"Country" },
    {"OrderDate",GroupColumn.DateGrouping.YEAR },
    {"city" },
    {"sales" },
    {"shippedDate",GroupColumn.DateGrouping.QUARTER }
};
In the above code:
DateGrouping is an enum of the type GroupColumn.DateGrouping. It accepts the following values:
- YEAR
 - HALFYEAR
 - QUARTER
 - MONTH
 - DATE
 - HOUR
 - MINUTE
 - SECOND
 - MILLISECOND
 - NONE