-- nueva extensión "GroupobyDt"
This commit is contained in:
@@ -1195,6 +1195,24 @@ Namespace Extensiones
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
Return TmpDt
|
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
|
End Function
|
||||||
|
|
||||||
<Runtime.CompilerServices.Extension()>
|
<Runtime.CompilerServices.Extension()>
|
||||||
|
|||||||
Reference in New Issue
Block a user