2

私はVB.Netでこの問題を抱えています。

タイプ文字列のリストがあります。

Dim list As New List(Of String)

このリストには重複が含まれる場合と含まれない場合があります。
今私が欲しいのは、リストに値があるとしましょう {"10", "10", "10", "11", "11", "12"}
配列(2次元)/リストを作成したいこのような価値を私に与えます。
(3,10;(2,11);(1,12)

簡単に言うと、10 は 3 回、11 は 2 回、12 は 1 回存在します。私が使用しているので、私に返信
しないでくださいLINQVB.Net 2.0

4

3 に答える 3

3

.NET 2 では、これを自分で追跡する必要があります。最も簡単な方法はDictionary(Of String, Integer)、カウントを格納するために独自のものを作成し、手動でループすることです。

Dim dict = New Dictionary(Of String, Integer)
For Each value in list
    If dict.ContainsKey(value) Then
         Dim count = dict(value)
         dict(value) = count + 1
    Else
         dict(value) = 1
    End If
Next

' dict now contains item/count
For Each kvp in dict
    Console.WriteLine("Item {0} has {1} elements", kvp.Key, kvp.Value)
Next
于 2013-08-05T17:36:09.987 に答える
2

辞書を使用しない理由:

    Dim lookup As New Dictionary(Of String, Integer)
    For Each sz As String In list
        If Not lookup.ContainsKey(sz) Then lookup.Add(sz, 0)
        lookup(sz) += 1
    Next
于 2013-08-05T17:36:00.077 に答える
1

Dictionary(Of String, Integer)次のように、各一意の値のカウントを保持するために a を使用する必要があります。

Dim dict As New Dictionary(Of String, Integer)

For Each item As String In list
    If dict.ContainsKey(item) Then
        dict(item) += 1
    Else
        dict.Add(item, 1)
    End If
Next

これで、次のように、辞書をループして結果を使用できます。

For Each result As String In dict.Keys
    ' Do something with result
Next
于 2013-08-05T17:37:32.897 に答える