我正在创建一个小的visual basic windows窗体程序,我正在尝试为数据实现一个sort函数。我可以很容易地按字母顺序对名称列表框进行排序,但是与该名称相关的所有其他值(地址,日期等)我都无法对其进行排序。
非常感谢任何帮助。
以下是我用来对列表框进行排序的代码:
Private Sub btnsort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsort.Click
Dim Templist As New List(Of String)
For Each LI In lstName.Items
Templist.Add(String.Concat(LI.ToString))
Next
Templist.Sort()
lstName.DataSource = Templist
End Sub
这是新代码:
Private Sub btnsort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsort.Click
Dim items = _
Enumerable _
.Range(0, lstapartment.Items.Count) _
.Select(Function(n) New With _
{ _
.apartment = CInt(lstapartment.Items(n)), _
.name = CStr(lstname.Items(n)), _
.date = CStr(lsttime.Items(n)), _
.contact = CInt(lstcontact.Items(n)) _
}) _
.OrderBy(Function(x) x.apartment) _
.ToArray()
lstname.DataSource = items.Select(Function(x) x.apartment).ToArray()
lstcontact.DataSource = items.Select(Function(x) x.name).ToArray()
lstapartment.DataSource = items.Select(Function(x) x.contact).ToArray()
lsttime.DataSource = items.Select(Function(x) x.Date).ToArray()
End Sub
答案 0 :(得分:0)
试试这个:
Private Sub btnsort_Click(sender As Object, e As EventArgs) Handles btnsort.Click
Dim items = _
Enumerable _
.Range(0, lstName.Items.Count) _
.Select(Function(n) New With _
{ _
.Name = CStr(lstName.Items(n)), _
.Address = CStr(lstAddress.Items(n)), _
.Phone = CStr(lstPhone.Items(n)), _
.Date = CDate(lstDate.Items(n)) _
}) _
.OrderBy(Function(x) x.Name) _
.ToArray()
lstName.DataSource = items.Select(Function(x) x.Name).ToArray()
lstAddress.DataSource = items.Select(Function(x) x.Address).ToArray()
lstPhone.DataSource = items.Select(Function(x) x.Phone).ToArray()
lstDate.DataSource = items.Select(Function(x) x.Date).ToArray()
End Sub
这假设每个列表框中的项目数相同,但听起来就像正在发生的事情。