Ich bin auf der Suche nach einer einfachen Möglichkeit, NameValueCollection auf der Basis des Schlüssels zu sortieren - es sollte jedoch keine Leistung schwer sein.Gibt es eine einfache Möglichkeit, NameValueCollection auf der Basis des Schlüssels in C# zu sortieren?
Antwort
beginnen mit SortedDictionary<string,string>
oder SortedList<string,string>
und Sie sind schon da ...
Wenn Sie die mehrere Artikel pro Schlüssel benötigen, dann eine SortedDictionary<string,List<string>>
betrachten. Es gibt Möglichkeiten, die Erweiterung mit Erweiterungsmethoden zu vereinfachen - es muss nicht beängstigend sein.
Beachten Sie auch, dass NameValueCollection
ist Groß- und Kleinschreibung, so dass Sie möglicherweise eine der unempfindlichen Vergleiche verwenden müssen - zum Beispiel:
Dictionary<string,string> data = new Dictionary<string,string>(
StringComparer.InvariantCultureIgnoreCase);
(edit) hier ist ein Beispiel eine Verlängerung Methode der Verwendung von mehreren Werten zu füllen gegen einen einzelnen Schlüssel in C# 3.0:
static void Main()
{
var data = new Dictionary<string, List<string>>(
StringComparer.InvariantCultureIgnoreCase);
data.Add("abc", "def");
data.Add("abc", "ghi");
}
static void Add<TKey, TValue>(this IDictionary<TKey, List<TValue>> lookup,
TKey key, TValue value)
{
List<TValue> list;
if (!lookup.TryGetValue(key, out list))
{
list = new List<TValue>();
lookup.Add(key, list);
}
list.Add(value);
}
Hier ist ein Brute-Force-Hack, den ich nicht zu stolz bin, aber es funktioniert, wenn Sie etwas schnell und schmutzig brauchen.
public static void Sort(this NameValueCollection nameValueCollection)
{
// Create a temporary collection the same size as the original
NameValueCollection tempNameValueCollection = new NameValueCollection(nameValueCollection.Count);
// Sort the keys
string[] keys = nameValueCollection.AllKeys;
Array.Sort(keys);
foreach (string key in keys)
{
// Sort the values
string[] values = nameValueCollection[key].Split(',');
Array.Sort(values);
// Add each value to the temporary collection
foreach (string value in values)
{
tempNameValueCollection.Add(key, value);
}
}
// Clear the original collection
nameValueCollection.Clear();
// Add the sorted entries back
nameValueCollection.Add(tempNameValueCollection);
}
- 1. Gibt es eine einfache Möglichkeit, nach mehreren Kriterien zu sortieren, die Bindungen in R erhalten?
- 2. Gibt es eine einfache Möglichkeit, Routing in JSF zu implementieren?
- 3. Gibt es eine einfache Möglichkeit, Bildabmessungen in Ruby zu erhalten?
- 4. Gibt es eine einfache Möglichkeit, Kriterien in HQL zu konvertieren?
- 5. Gibt es eine einfache Möglichkeit, InternalsVisibleToAttribute zu verwenden?
- 6. Gibt es eine einfache Möglichkeit, Openshift Autoscaling zu testen?
- 7. Gibt es eine einfache Möglichkeit, JavaScript in WebStorm zu bewerten?
- 8. Gibt es eine einfache Möglichkeit, mit Open MPI zu klingeln?
- 9. Gibt es eine einfache Möglichkeit, das Alphabet programmatisch zu erhalten?
- 10. Sortieren einer namevaluecollection
- 11. Gibt es eine einfache Möglichkeit, eine .exe-Datei aus C-Quelldateien auf einem Mac zu erstellen?
- 12. Gibt es eine einfache Möglichkeit, einen Code TextBox zu erstellen?
- 13. Gibt es eine einfache Möglichkeit, Benutzer von Facebook zu erhalten?
- 14. Gibt es eine einfache Möglichkeit, eine Tabelle in Prozedur umzubenennen?
- 15. Gibt es eine Möglichkeit, ein elasticsearch_score von ASC zu sortieren?
- 16. Gibt es eine einfache Möglichkeit, TypeScript-Definitionen zu installieren?
- 17. Gibt es eine einfache Möglichkeit, ein Plist (Array von Wörterbüchern) nach Schlüsselwert zu sortieren?
- 18. Gibt es eine einfache Möglichkeit, die Endzeit des Events auf der AgendaWeek für stündliche Slots anzuzeigen?
- 19. Gibt es eine einfache Möglichkeit, Gulture mit Django zu verwenden?
- 20. Gibt es eine einfache Möglichkeit, alle gängigen Modulerweiterungen zu erhalten?
- 21. Gibt es eine einfache Möglichkeit, Hoptoad mit CakePHP zu verwenden?
- 22. Gibt es eine einfache Möglichkeit, ein ASP.NET-Formular zu löschen?
- 23. Gibt es eine einfache Möglichkeit, jshint mit Netbeans zu integrieren?
- 24. Gibt es eine einfache Möglichkeit, Bilder schräg zu stellen?
- 25. Gibt es eine einfache Möglichkeit, mit Basscss zu beginnen?
- 26. Gibt es eine einfache Möglichkeit, den Flex Preloader zu verstecken?
- 27. Gibt es eine einfache Möglichkeit, zwei System.Drawing.Color-Werte zu mischen?
- 28. In .NET MVC gibt es eine einfache Möglichkeit zu überprüfen, ob ich auf der Homepage bin?
- 29. Gibt es eine einfache Möglichkeit, auf einer lokalen Webseite eine in der URL übergebene Variable anzuzeigen?
- 30. Gibt es eine einfache Möglichkeit, einen Socket zu einem SSLified Socket in C++ zu konvertieren?