在类型结构的链表中查找元素(VB.NET)

在类型结构的链表中查找元素(VB.NET),vb.net,data-structures,linked-list,find,Vb.net,Data Structures,Linked List,Find,我宣布了一个结构: Public Structure MyStructure Public name As String Public dataType As String Public address As String End Structure 然后是一个链接列表: Private MyList As New LinkedList(Of MyStructure) 给定结构中元素的值,在列表中查找元素的最佳方法是什么。例如,如果我想在列表中找到字段名为“readi

我宣布了一个结构:

Public Structure MyStructure
    Public name As String
    Public dataType As String
    Public address As String
End Structure
然后是一个链接列表:

Private MyList As New LinkedList(Of MyStructure)

给定结构中元素的值,在列表中查找元素的最佳方法是什么。例如,如果我想在列表中找到字段名为“readings”的MyStruct实例,我应该怎么做?有没有办法避免在链表元素之间循环?

您最好使用类而不是结构:

Public Class MyFoo
    Public Property name As String
    Public Property dataType As String
    Public Property address As String
End Class
这允许以下操作:

Dim lst As New LinkedList(Of MyFoo)

lst.AddFirst(New MyFoo With {.name = "Ziggy", .address = "here", .dataType = "foo"})
lst.AddFirst(New MyFoo With {.name = "Zoey", .address = "there", .dataType = "bar"})
lst.AddFirst(New MyFoo With {.name = "Curly", .address = "nowhere", .dataType = "any"})

Dim item = lst.FirstOrDefault(Function(x) x.name = "Ziggy")
If item IsNot Nothing Then
    ' do something
End If
真的没有办法避免循环——某个地方必须迭代集合才能找到“Ziggy”(或“readings”);在这里,我们不必为它编写代码

如果找不到项目,
FirstOrDefault
将返回
Nothing
。由于结构是一种值类型,因此它不能是
Nothing
(尽管它可以包含
Nothing
)。因此,行
If item not Nothing
会导致语法错误


我想对于一个结构,您可以使用
String.IsNullOrEmpty
来测试名称是否已填充,但我只会使用一个类。

有一个名为“name”的字段,如果该字段的值为“readings”,我应该如何查找具有name=“readings”的struct元素?。。。我之所以使用“name”,是因为在本例中,列表中的每个结构实例都有一个唯一的字段。感谢Puropoix,这很有帮助。我将尝试使用类而不是结构。