我有一个来自类对象的Desktopname列表。下面是每个节点都有desktopid,desktopname等的类对象。
<XmlType([Namespace]:="http://vanguard.com/csif/CSIFConfiguration.xsd")>
Public Class DesktopGroupRoleMappingType
<XmlAttribute>
Public businessfunction As String
<XmlAttribute>
Public desktopid As Integer
<XmlIgnore>
Public desktopidSpecified As Boolean
<XmlAttribute>
Public desktopname As String
到目前为止,我们正在使用以下代码将桌面名称添加到列表中。
For Each desktopMapping As DesktopGroupRoleMappingType In desktopGroupRoleMappings
If lstDesktops.Items.IndexOf(desktopMapping.desktopname.Trim) < 0 Then
lstDesktops.Items.Add(desktopMapping.desktopname.Trim) '& " (" & desktopMapping.businessfunction.Trim & ")")
End If
Next
现在,我需要基于desktopID从列表中删除两个桌面名称,因此我添加了如下配置条目。现在我的问题是,如何从列表中删除桌面名称。
<add key ="Test" value="152,155"/>
答案 0 :(得分:0)
由于列表仅包含名称,因此一旦添加,您将无法通过ID查找并将其删除。有解决方法。例如,如果您覆盖ToString
上的DesktopGroupRoleMappingType
方法,以使其返回名称,如下所示:
<XmlType([Namespace]:="http://vanguard.com/csif/CSIFConfiguration.xsd")>
Public Class DesktopGroupRoleMappingType
<XmlAttribute>
Public businessfunction As String
<XmlAttribute>
Public desktopid As Integer
<XmlIgnore>
Public desktopidSpecified As Boolean
<XmlAttribute>
Public desktopname As String
Public Function ToString() As String
Return desktopname
End Function
End Class
然后您可以将整个对象添加到列表中,而不仅仅是名称:
lstDesktops.Items.Add(desktopMapping)
一旦列表中有整个对象,您就可以搜索整个对象以找到要删除的对象。
但是,如果您甚至不需要在事后删除它们,而只需跳过首先添加它们就足够了,那么这会更加容易。只需过滤掉不需要的部分,然后添加它们即可:
If Not unwantedIds.Contains(desktopMapping.desktopid) Then
lstDesktops.Items.Add(desktopMapping.desktopname.Trim)
End If