Lập trình VB.Net

Kỹ thuật thao tác với Dictionary Collection

Kỹ thuật thao tác với Dictionary Collection trong VB.Net
Được viết bởi Minh Hoàng

Series lập trình VB.NET, ngôn ngữ lập trình hướng đối tượng .NET Framework

Trong bài viết này mình sẽ giới thiệu một số kỹ thuật thao tác với Dictionary Collection trong VB.Net:

  1. Kỹ thuật thêm Value có cùng Key vào Dictionary
  2. Một số kỹ thuật thao tác trên Dictionary
1. Kỹ thuật thêm Value có cùng Key vào Dictionary
1. Kỹ thuật thêm Value có cùng Key vào Dictionary
[code language=”vb” highlight=”25,26,27,28″] Module MinhHoangBlog

Sub Main()

‘ Declare List data
Dim listData As New List(Of String) From
{
{"first:1"},
{"second:2"},
{"third:1"},
{"first:2"},
{"first:3"},
{"third:2"}
}

‘ Declare mapData: Key is String, Value is List<int>
Dim mapData As New Dictionary(Of String, List(Of Integer))

‘ Get data of mapData
For Each item In listData

‘ Split item by colon
Dim parts() As String = item.Split( ":" )

If Not mapData.ContainsKey(parts(0)) Then
mapData.Add(parts(0), New List(Of Integer))
End If
mapData(parts(0)).Add(parts(1))

Next

‘ Print data of mapData
For Each kvp As KeyValuePair(Of String, List(Of Integer)) In mapData

‘ Declare Keyis String
Dim key = kvp.Key

‘ Declare Value is List<int>
Dim listVal As List(Of Integer) = kvp.Value

Console.WriteLine("・Key: {0}", key)
For Each item In listVal
Console.WriteLine(vbTab & "Value: {0}", item)
Next

Next

Console.ReadKey()

End Sub

End Module
[/code]

Kết quả chương trình

Kết quả chương trình

2. Một số kỹ thuật thao tác trên Dictionary
2. Một số kỹ thuật thao tác trên Dictionary

Trong code example này có sử dụng đến kiến thức của Extension method trong VB.Net.

[code language=”vb” highlight=”7,15,18,24,30,33,36,46,56″] Imports System.Runtime.CompilerServices

Module MinhHoangBlog

Sub Main()

‘ Declare and initialize the value of a dictionary
Dim mapStudents As New Dictionary(Of Integer, String) From
{
{123, "Tom"},
{444, "Jerry"},
{555, "Peter"}
}

‘ Add new data to dictionary
mapStudents.Add( 666, "Marry" )

‘ Print Value based on Key
Console.WriteLine(mapStudents(444))  ‘Output: Jerry

‘ New Line
Console.WriteLine()

‘ Print Key and Value
For Each stu In mapStudents
Console.WriteLine(stu.Key & " = " & stu.Value)
Next

‘ Get Key-Value using LINQ
Dim result1 As KeyValuePair(Of Integer, String) = mapStudents.Single(Function(item) item.Key = 444)

‘ Get Key-Value using extension method
Dim result2 As KeyValuePair(Of Integer, String) = mapStudents.GetValueFromKey(444)

‘ Update value of map data based on key
Dim searchKey As Integer = result2.Key
If mapStudents.ContainsKey(searchKey) Then
‘ 値更新
mapStudents(searchKey) = "minhhn.com"
End If

‘ New Line
Console.WriteLine()

‘ Iterate in Dictionary
For Each kvp As KeyValuePair(Of Integer, String) In mapStudents
Dim key As Integer = kvp.Key
Dim val As String = kvp.Value

‘ Do whatever you want with key, val:
Console.WriteLine("{0} = {1}", key, val)
Next

‘ Loop by key
For Each iKey As Integer In mapStudents.Keys
Dim val As String = mapStudents(iKey)
‘…
‘…..Write logic codes Here….
Next

Console.ReadKey()

End Sub

‘ Extension method
”’ <summary>データマップのキーを基にして値を取得する</summary>
”’ <param name="mapData">データマップ</param>
”’ <param name="key">キー</param>
”’ <returns>値</returns>
<Extension()>
Public Function GetValueFromKey(Of TKey, TValue)(mapData As Dictionary(Of TKey, TValue), key As TKey) As KeyValuePair(Of TKey, TValue)
Dim value As TValue
If mapData.TryGetValue(key, value) Then
Return New KeyValuePair(Of TKey, TValue)(key, value)
End If
Return Nothing
End Function

End Module
[/code]

Kết quả chương trình

Kết quả chương trình

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

3 bình luận

  • Bạn ơi, bạn có khóa VB.Net hay C# cho lập trình AutoCad không bạn?

      • Mình thấy VB.net dể hiểu hơn C#, nhưng mình lại không có sách học VB.net, tìm trên mạng thì toàn tiếng anh không, nhiều người bỏ nên học C#, vì nó lập trình hướng đối tượng, còn VB.net thì không, nên hiện tại mình đang chập chững viết các class trong C# với các hàm đơn giản để phục vụ cho công việc trong phần mềm Autocad sau đó build ra file DLL, chỉ việc Netload vào Autocad là xài được, và mình muốn share cho các đồng nghiệp dùng, nhưng không phải ai cũng biết cách dùng lệnh Netload, nên mình hướng tới sự tiện lợi cho mọi người là mình muốn build 1 file cài đặt từ 1 file DLL. Mà mình mãi các nguồn trên, không cái ai chỉ cả. Bạn biết lập trình cho Inventor thì chắc cũng biết về Autocad ha. Bạn biết cách build 1 file cài đặt từ 1 file DLL thì chỉ giúp mình với. Cảm ơn bạn nhiều.

Translate »