Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 分类词典行为_Vb.net_Sorting_Sorteddictionary - Fatal编程技术网

Vb.net 分类词典行为

Vb.net 分类词典行为,vb.net,sorting,sorteddictionary,Vb.net,Sorting,Sorteddictionary,我在应用程序中使用了一个SortedDictonaryOf字符串,字符串,我体验到一种奇怪的排序行为。考虑下面的代码示例: Dim Dic As New SortedDictionary(Of String, String) Dic.Add("'A", "") Dic.Add("A", "") Dic.Add("'B", "") Dic.Add("B", "") Dic.Add("'C", "") Dic.Add("C", "") 我希望键被排序为'A',B',C,A,B,C,这是通过

我在应用程序中使用了一个SortedDictonaryOf字符串,字符串,我体验到一种奇怪的排序行为。考虑下面的代码示例:

Dim Dic As New SortedDictionary(Of String, String)
Dic.Add("'A", "")
Dic.Add("A", "")
Dic.Add("'B", "")
Dic.Add("B", "")
Dic.Add("'C", "")
Dic.Add("C", "")
我希望键被排序为'A',B',C,A,B,C,这是通过<操作符手动比较键时得到的结果。然而,遍历这些键会返回A,'A,B,'B,C,'C

如何将SortedDictionary行为更改为对以“first”开头的单词进行排序

谢谢,, CFP

根据默认比较器,a中的每个键都必须是唯一的

SortedDictionaryTKey,TValue需要比较器实现来执行键比较。此构造函数使用默认的本地区域性相关泛型相等比较器ComparerT.default。如果类型TKey实现System.IComparableT泛型接口,则默认比较器使用该实现。或者,您可以通过使用接受比较器参数的构造函数来指定IComparerT通用接口的实现

Dim Dic As New SortedDictionary(Of String, String)(StringComparer.Ordinal)
Dic.Add("'A", "")
Dic.Add("A", "")
Dic.Add("'B", "")
Dic.Add("B", "")
Dic.Add("'C", "")
Dic.Add("C", "")


For Each Item As KeyValuePair(Of String, String) In Dic
  Console.WriteLine(Item.Key & " > " & Item.Value)
Next
输出:

'A > 
'B > 
'C > 
A > 
B > 
C > 
根据默认比较器,中的每个键都必须是唯一的

SortedDictionaryTKey,TValue需要比较器实现来执行键比较。此构造函数使用默认的本地区域性相关泛型相等比较器ComparerT.default。如果类型TKey实现System.IComparableT泛型接口,则默认比较器使用该实现。或者,您可以通过使用接受比较器参数的构造函数来指定IComparerT通用接口的实现

Dim Dic As New SortedDictionary(Of String, String)(StringComparer.Ordinal)
Dic.Add("'A", "")
Dic.Add("A", "")
Dic.Add("'B", "")
Dic.Add("B", "")
Dic.Add("'C", "")
Dic.Add("C", "")


For Each Item As KeyValuePair(Of String, String) In Dic
  Console.WriteLine(Item.Key & " > " & Item.Value)
Next
输出:

'A > 
'B > 
'C > 
A > 
B > 
C > 

您需要指定不同的比较器:

Dim Dic As New SortedDictionary(Of String, String)(StringComparer.Ordinal)

您需要指定不同的比较器:

Dim Dic As New SortedDictionary(Of String, String)(StringComparer.Ordinal)

在我的电话簿中,约翰·奥利里在奥勒·特拉普斯和丹尼斯·奥立克之间排序。您必须使用非区域性相关排序:

Dim Dic As New SortedDictionary(Of String, String)(StringComparer.Ordinal)

在我的电话簿中,约翰·奥利里在奥勒·特拉普斯和丹尼斯·奥立克之间排序。您必须使用非区域性相关排序:

Dim Dic As New SortedDictionary(Of String, String)(StringComparer.Ordinal)

事实上,我没有想到这一点。谢谢!事实上,我没有想到这一点。谢谢!