ExtensionMethod.NET Home of 880 C#, Visual Basic, F# and Javascript extension methods

LastValue

Returns the the last row value for a column

Source

Public Module DataTableExtensions
    <System.Diagnostics.DebuggerStepThrough()> _
    <System.Runtime.CompilerServices.Extension()> _
    Public Function LastValue(Of T)(ByVal dt As DataTable, ByVal ColumnName As String) As T
        Return dt.Rows.Item(dt.RowCount).Field(Of T)(dt.Columns(ColumnName))
    End Function
    <System.Diagnostics.DebuggerStepThrough()> _
    <System.Runtime.CompilerServices.Extension()> _
    Public Function LastValue(Of T)(ByVal dt As DataTable, ByVal ColumnIndex As Integer) As T
        Return dt.Rows.Item(dt.RowCount).Field(Of T)(dt.Columns(ColumnIndex))
    End Function
    <System.Diagnostics.DebuggerStepThrough()> _
    <System.Runtime.CompilerServices.Extension()> _
    Public Function RowCount(ByVal dt As DataTable) As Integer
        Return dt.Rows.Count - 1
    End Function
End Module

Example

Public Class Form1
    Private Sub Demo()
        Dim dt As DataTable = GetData()
        Console.WriteLine(dt.LastValue(Of Int32)("ID"))
        Console.WriteLine(dt.LastValue(Of String)("Column2"))
    End Sub
    Private Function GetData() As DataTable
        Dim MockedData As New DataTable
        MockedData.Columns.AddRange(New DataColumn() _
            { _
                New DataColumn("ID", GetType(System.Int32)), _
                New DataColumn("Column1", GetType(System.String)), _
                New DataColumn("Column2", GetType(System.String)) _
            } _
        )

        MockedData.Rows.Add(New Object() {1, "A", "Apples"})
        MockedData.Rows.Add(New Object() {2, "B", "Grapes"})
        MockedData.Rows.Add(New Object() {3, "A", "Pears"})
        MockedData.Rows.Add(New Object() {4, "A", "Cherries"})
        MockedData.Rows.Add(New Object() {5, "B", "Oranges"})
        MockedData.Rows.Add(New Object() {6, "A", "Prunes"})
        MockedData.Rows.Add(New Object() {7, "A", "Grapes"})
        MockedData.Rows.Add(New Object() {8, "B", "Oranges"})
        MockedData.Rows.Add(New Object() {9, "B", "Oranges"})

        Return MockedData

    End Function
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Demo()
    End Sub
End Class

Author: Kevin S Gallagher

Submitted on: 6 aug. 2012

Language: VB

Type: System.DataTable

Views: 5595