-- nueva extensión "GroupobyDt"

This commit is contained in:
2024-03-15 07:50:08 -07:00
parent b672d4a988
commit 24d607c577

View File

@@ -1195,6 +1195,24 @@ Namespace Extensiones
End If
Return TmpDt
End Function
<Runtime.CompilerServices.Extension()>
Public Function GroupByDt(dtt As DataTable, ByVal RowFilter As String, ByVal Orderby As String, ByVal GroupByColumns As String(), ByVal AggregateColumn As String) As DataTable
Dim dv As DataView = New DataView(dtt, RowFilter, Orderby, DataViewRowState.CurrentRows)
Dim dtGroup As DataTable = dv.ToTable(True, GroupByColumns)
dtGroup.Columns.Add("TotalCount", GetType(Integer))
dtGroup.Columns.Add("TotalSum", GetType(Decimal))
Dim filtros As New List(Of String)
For Each dr As DataRow In dtGroup.Rows
For Each col As String In GroupByColumns
filtros.Add($"{col}='{dr(col)}'")
Next
dr("TotalCount") = dtt.Compute($"Count({AggregateColumn})", String.Join(" AND ", filtros))
dr("TotalSum") = dtt.Compute($" SUM({AggregateColumn})", String.Join(" AND ", filtros))
Next
Return dtGroup
End Function
<Runtime.CompilerServices.Extension()>