Дублирующее значение в списках. Как я могу избежать этого? - PullRequest
0 голосов
/ 07 января 2019
Public Class clsA   
    Public icounter As Integer
    Public dtime As DateTime 
End Class

Dim list_A As New List(Of clsA)

Dim dyus As DateTime = DateTime.Now
oB = New clsA
oB.dtime = dyus
oB.counter = counter2 (comes from COM Port)

Dim b As Integer = oB.counter

Dim t1 As TimeSpan = New TimeSpan(0, 1, 0)

list_A.Add(oB)


If DateTime.Now - (list_A(0).dtime) > t1 Then
    If list_A.Sum(Function(x) x.counter) > 10 Then
        MessageBox.Show("TEST")
    End If
End If

привет

list_A.Add(oB) имеет 2 значения: dtime (DateTime) и icounter (Integer).

list_A в таймере. Так что оно всегда увеличивается, но я хочу избежать повторяющихся счетчиков в этом списке.

Как я могу это сделать?

Вывод:

time 1/7/2019 06:10:16 PM
counter 0

time 1/7/2019 06:10:18 PM
counter 0

time 1/7/2019 06:10:20 PM
counter 1

time 1/7/2019 06:10:20 PM
counter 1

Я хочу вывод:

time 1/7/2019 06:10:16 PM
counter 0

time 1/7/2019 06:10:20 PM
counter 1

Дубликаты со счетчиками не должны быть добавлены (или удалены).

1 Ответ

0 голосов
/ 07 января 2019

Вы можете просто перебрать их все так:

'New list
Dim list_B As New List(Of clsA)
For each item in list_A
    If Not list_B.Contains(item) Then
        list_B.Add(item)
    End If
Next

Если вы сделаете это в конце, у вас должен появиться новый список list_B, который содержит все, что перечисляется вместе, но без дублирования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...