В vb.net Linq, я хочу сортировать список по значению, но если значение равно null, оно должно использовать другое значение.Vb.net Linq order by special
Пример:
Class Item
Public _Id As Integer
Public _FullName As String
Public _Acronym As String
Public Sub New(ByVal id As Integer, ByVal fullName As String, ByVal acronym As String)
Me._Id = id
Me._FullName = fullName
Me._Acronym = acronym
End Sub
End Class
Sub Main()
Dim itemList As New List(Of Item)
itemList.Add(New Item(1, "AZZ", "A"))
itemList.Add(New Item(2, "BBB", "B"))
itemList.Add(New Item(3, "FFF", "F"))
itemList.Add(New Item(4, "An item", Nothing))
itemList = (From l In itemList Order By l._Acronym).ToList
For Each i In itemList
Debug.Print(String.Format("{0}{2}{1}", i._Acronym, i._FullName, IIf(i._Acronym IsNot Nothing, " - ", "")))
Next
End Sub
Результат с такого рода:
An item
A - AZZ
B - BBB
F - FFF
Результат Я хочу:
A - AZZ
An item
B - BBB
F - FFF
Поскольку "" должно быть после того, как "А".
Сортировка следует использовать с помощью сокращения, но если аббревиатура - ничто, он должен использовать полное имя. Мы не можем поместить значение FullName в Акроним в результате. это может быть сделано как метод для сортировки, но в списке результатов необходимо сохранить исходное значение аббревиатуры.
есть еще один или лучше, чем: ITEMLIST = (From l В itemList Order By String.Format ("{0} {2} {1}", l._Acronym, l._FullName, IIf (l._Acronym IsNot Nothing, "-", ""))). ToList – forX