Vb.net 如何使用Compareto修复字典中按值排序的Visual Studio警告CA1310?

Vb.net 如何使用Compareto修复字典中按值排序的Visual Studio警告CA1310?,vb.net,cultureinfo,compareto,Vb.net,Cultureinfo,Compareto,我编写了一个VB应用程序,它根据字典值而不是键进行排序。字典包含地名,值包含属性,例如大小、流行度、颜色和所有者。文字由用户指定,例如德语中的汽车颜色: Dim ToSort As New Dictionary(Of String, String) ToSort.Add("Chevy", "rot") ' Red ToSort.Add("Honda", "Grün") ' Green ToSort.Add("

我编写了一个VB应用程序,它根据字典值而不是键进行排序。字典包含地名,值包含属性,例如大小、流行度、颜色和所有者。文字由用户指定,例如德语中的汽车颜色:

Dim ToSort As New Dictionary(Of String, String)
ToSort.Add("Chevy", "rot") ' Red
ToSort.Add("Honda", "Grün") ' Green
ToSort.Add("Lada", "Apfelsíne") 'Orange

' make a list
Dim myList As List(Of KeyValuePair(Of String, String)) = ToSort.ToList()
' Sort it
myList.Sort(Function(firstPair, nextPair) firstPair.Value.CompareTo(nextPair.Value))

然后,我可以通过颜色、更改值和其他属性来显示它

For Each S As KeyValuePair(Of String, String) In myList
   ' do something in the value order
next

但CompareTo给了我一个警告:

Warning CA1310  The behavior of 'String.CompareTo(String)' could vary based on the current user's locale settings. Replace this call with a call to 'String.Compare(String, String, System.StringComparison)'
我很确定它需要一个StringComparison.CurrentCulture(文化敏感),但CompareTo不支持它


如何使其支持unicode和字母大小写,并能干净地编译?或者它正在做我想要的事情,我可以抑制它?

dim sorted=ToSort.OrderBy(Function(kvp)kvp.Value,StringComparer.CurrentCultureIgnoreCase)。ToDictionary(Function(kvp)kvp.Key,Function(kvp)kvp.Value)
——你有一个奇怪的字典:重复的键和缺少引号。手工键入它来尝试制作一个例子。谢谢,我们将编辑它。“CompareTo不支持它”,这就是它建议您使用Compare()的原因