asp.net – 如何在VB.net中使用Dictionary?
发布时间:2020-12-16 07:28:16 所属栏目:asp.Net 来源:网络整理
导读:我已经编写了这个函数来自动从字符串数组中的不同值中将性别更正为M或F.它工作正常但我的经理告诉我使用Dictionary,他说效率更高.但我不知道.有谁想帮我理解如何做到这一点?谢谢. Public Function AutoGender(ByVal dt As DataTable) As DataTable Dim Gend
我已经编写了这个函数来自动从字符串数组中的不同值中将性别更正为M或F.它工作正常但我的经理告诉我使用Dictionary,他说效率更高.但我不知道.有谁想帮我理解如何做到这一点?谢谢.
Public Function AutoGender(ByVal dt As DataTable) As DataTable Dim Gender As String = "" Dim Mkeywords() As String = {"boy","boys","male","man","m","men","guy"} Dim Fkeywords() As String = {"girl","girls","female","woman","f","women","chick"} Dim row As DataRow For Each row In dt.Rows If Mkeywords.Contains(row("Gender").ToString.ToLower) Then Gender = "M" row("Gender") = Gender ElseIf Fkeywords.Contains(row("Gender").ToString.ToLower) Then Gender = "F" row("Gender") = Gender End If Next Return dt End Function 解决方法
下面是一个示例,您可以如何实现Dictionary(Of String,String)来查找此同义词是否已知:
Shared GenderSynonyms As Dictionary(Of String,String) = New Dictionary(Of String,String) From {{"boy","M"},{"boys",{"male",{"man",{"m",{"men",{"guy",{"girl","F"},{"girls",{"female",{"woman",{"f",{"women",{"chick","F"}} Public Function AutoGender(ByVal dt As DataTable) As DataTable If dt.Columns.Contains("Gender") Then For Each row As DataRow In dt.Rows Dim oldGender = row.Field(Of String)("Gender").ToLower Dim newGender As String = String.Empty If GenderSynonyms.TryGetValue(oldGender,newGender) Then row.SetField("Gender",newGender) End If Next End If Return dt End Function 请注意,我已使用collection initializer填充Dictionary,这是使用文字初始化集合的便捷方式.你也可以使用 编辑:另一种可能更简洁的方法是使用两个 Shared maleSynonyms As New HashSet(Of String) From {"boy","guy"} Shared femaleSynonyms As New HashSet(Of String) From {"girl","chick"} Public Function AutoGender(ByVal dt As DataTable) As DataTable If dt.Columns.Contains("Gender") Then For Each row As DataRow In dt.Rows Dim oldGender = row.Field(Of String)("Gender").ToLower Dim newGender As String = String.Empty If maleSynonyms.Contains(oldGender) Then row.SetField("Gender","M") ElseIf femaleSynonyms.Contains(oldGender) Then row.SetField("Gender","F") End If Next End If Return dt End Function HashSet也必须是唯一的,因此它不能包含重复的字符串(如字典中的键),但它不是键值对而只是一组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何使用Membership API与自己的应用程序相关数
- active-directory – IdentityServer3 – 适用于ActiveDire
- asp.net – 文档生成 – 我应该选择哪些框?
- asp.net-mvc – ASP.NET MVC母版页
- .net – 使用log4net和在哪里实现它并使用elmah?
- .net – <%#和<%=开启代码有什么区别?
- asp.net-mvc-4 – @ Html.Raw坚持编码引号
- asp.net-mvc – ASP.NET MVC项目中的Telerik报告
- asp.net-mvc – 最佳实践:在web api控制器中处理错误和异常
- asp.net-mvc-4 – 如何为OData服务配置Upshot.js?