sort کردن datatable ها

ms_vb

Member
سلام
چطور میتونم اطلاعات یک datatable را نسبت به اطلاعات 2 ستون مرتب کنم؟
ممنون از جوابتون
 

the_king

مدیرکل انجمن
سلام
چطور میتونم اطلاعات یک datatable را نسبت به اطلاعات 2 ستون مرتب کنم؟
ممنون از جوابتون

فرض کنیم که یک DataTable داریم با دو ستون و تعدادی سطر :
کد:
        Dim source As New System.Data.DataTable()
        source.Columns.Add("Title", GetType(String))
        source.Columns.Add("Value", GetType(Double))
        source.Rows.Add("Aaaa", 3)
        source.Rows.Add("Cccc", 1)
        source.Rows.Add("Dddd", 2)
        source.Rows.Add("Bbbb", 4)

که سطر های این جدول بر اساس یک معیار دلخواه (مثلا مقدار عددی ستون دوم) قابل مقایسه است، کلاسی
می سازیم که می تواند دو سطر از جدول را با هم مقایسه کند :
کد:
    Private Class RowsComparer
        Implements IComparer(Of DataRow)

        Public Function Compare(ByVal x As System.Data.DataRow, ByVal y As System.Data.DataRow) As Integer Implements System.Collections.Generic.IComparer(Of System.Data.DataRow).Compare
            Return CDbl(x("Value")) - CDbl(y("Value"))
        End Function
    End Class

پس می توانیم با استفاده از این کلاس مقایسه سطر RowsComparer که ساخته ایم مرتب اش کنیم :
کد:
        Dim rows As New List(Of System.Data.DataRow)
        For Each row As System.Data.DataRow In source.Rows
            Dim newRow As System.Data.DataRow = source.NewRow()
            newRow.ItemArray = row.ItemArray
            rows.Add(newRow)
        Next
        source.Rows.Clear()
        rows.Sort(New RowsComparer())
        For Each row As System.Data.DataRow In rows
            source.Rows.Add(row)
        Next
 

جدیدترین ارسال ها

بالا