对象集合包含id列表Linq



我有一个列表框,用户可以多次选择。我想使用Linq并带回用户选择的选定id的记录。我需要为每个选定的ID

带回完整的对象记录

下面是联系人对象和集合对象

 Namespace MODEL
     <System.Serializable()> _
     Public Class ContactCollection
         Inherits System.Collections.ObjectModel.Collection(Of Contact)
         Implements IList(Of Contact)
     End Class
 End Namespace

 Namespace MODEL
     <System.Serializable()> _
     Public Class Contact
         Private mContactID As Int32 = 0
         Private mFirstName As String
         Private mLastName As String
         Public Property ContactID As Int32
             Get
                 Return mContactID
             End Get
             Set(value As Int32)
                 mContactID = value
             End Set
         End Property
         Public Property FirstName As String
             Get
                 Return mFirstName
             End Get
             Set(value As String)
                 mFirstName = value
             End Set
         End Property
         Public Property LastName As String
             Get
                 Return mLastName
             End Get
             Set(value As String)
                 mLastName = value
             End Set
         End Property
     End Class
 End Namespace

向收集对象添加5条记录

            Dim objCollection As New MODEL.ContactCollection
            Dim obj As New MODEL.Contact
            objCollection.Add(New MODEL.Contact With {
            .ContactID = 1, _
            .FirstName = "John", _
            .LastName = "Smtih" _
            })
            objCollection.Add(New MODEL.Contact With {
            .ContactID = 2, _
            .FirstName = "Mark", _
            .LastName = "Davis" _
            })
            objCollection.Add(New MODEL.Contact With {
            .ContactID = 3, _
            .FirstName = "Tom", _
            .LastName = "Howe" _
            })
            objCollection.Add(New MODEL.Contact With {
            .ContactID = 4, _
            .FirstName = "Jerry", _
            .LastName = "Thomas" _
            })
            objCollection.Add(New MODEL.Contact With {
            .ContactID = 5, _
            .FirstName = "Jane", _
            .LastName = "Marry" _
            })

这是从列表框中选择的联系人列表

            Dim lstContacts As New List(Of Integer)
            lstContacts.Add(2)
            lstContacts.Add(4)

我不知道该怎么做,在这一点上与Linq找到值。我想我必须使用contains,但我已经尝试了许多不同的方法,但我无法获得值。

我已经尝试过这个Linq,但不工作或带回任何记录

 Dim objSearch from SearchContacts in objCollection
        Where (lstContacts.Contains(SearchContacts.ContactID))

要获取id,请尝试:

Dim ids As IEnumerable(Of Int32) = myListBox.SelectedItems _
                                    .OfType(Of Contact)() _
                                    .Select( Function(c) c.ContactID ) _

编辑

如果你想要联系人,你可以直接:

Dim ids As IEnumerable(Of Contact) = myListBox.SelectedItems _
                                    .OfType(Of Contact)()

如果你想把联系人放在一个单独的复制集合中,你可以:

Dim ids As List(Of Contact) = myListBox.SelectedItems _
                                    .OfType(Of Contact)() _
                                    .ToList()

最后(如果你认为这是你真正的问题-只要告诉我,我擦除上面的所有内容)

Dim selectedContacts As IEnumerable(Of MODEL.Contact) = From contact In objCollection
                                                           Join id In lstContacts
                                                           On contact.ContactID Equals id
                                                           Select contact

相关内容

  • 没有找到相关文章

最新更新