私は、KeyValueCollectionをキーに基づいて並べ替える簡単な方法を探しています。しかし、パフォーマンスが重くてはいけません。C#のキーに基づいてNameValueCollectionをソートする簡単な方法はありますか?
7
A
答えて
13
SortedDictionary<string,string>
またはSortedList<string,string>
でスタートし、その後、SortedDictionary<string,List<string>>
を検討し、キーごとに複数のアイテムが必要な場合は...既に存在
ということにも注意してくださいNameValueCollection
は大文字と小文字を区別しませんので、あなたは、小文字を区別しない比較のいずれかを使用する必要があるかもしれません - 例えば:
Dictionary<string,string> data = new Dictionary<string,string>(
StringComparer.InvariantCultureIgnoreCase);
(編集)ここでは、複数の値を移入するために拡張メソッドを使用しての例を示します。 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);
}
2
ここで私はあまりにも誇りに思ってないんだけど、あなたが迅速かつ汚い何かが必要な場合はそれが動作強引なハックです。
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. CObListを簡単にソートする方法はありますか?
- 2. Objective C NSDictionary:キーの値に基づいてNSDictionaryキーをソートする方法
- 3. キーに基づいて配列をソートする方法は?
- 4. 指定されたパスに基づいてfolderIDを取得する簡単な方法はありますか?
- 5. Javaの値に基づいてマップをソートする最も簡単な方法は何ですか?
- 6. C#2.0のIDに基づいて単一のノードを更新する方法はありますか
- 7. GNU画面でENTERキーを送る簡単な方法はありますか?
- 8. C#からWebカメラにアクセスする簡単な方法はありますか?
- 9. キー "id"昇順に基づいてこのNSDictionaryをソートする方法は?
- 10. 以前の数値キーに基づいて配列をソートする方法は?
- 11. キーに基づいて辞書をソート
- 12. テキストに基づいてUIButtonサイズを調整する最も簡単な方法
- 13. フレックスダッシュボードのデータサブセットに基づいて簡単なグラフをプロットする
- 14. Readlineに代わる簡単な方法はありますか?
- 15. Facebook c#sdkを使用する簡単な方法はありますか?
- 16. 条件に基づいて結果をソートするSQLクエリを作成する方法はありますか
- 17. Cのパイプを簡単に消去する方法はありますか
- 18. 関連オブジェクトコレクションの属性に基づいてコアデータの結果をソートする方法はありますか?
- 19. 別のファイルの列に基づいてファイルをソートする方法はありますか?
- 20. pandas.Seriesを単調にする簡単な方法はありますか?
- 21. djangoの数に基づいてリストをソートする方法は?
- 22. ディープネストされたオブジェクト内のフィールドに基づいてレルムをソートする方法はありますか?
- 23. ファイルディスクリプタを簡単にフォークする方法はありますか?
- 24. QProgressBarを簡単にカスタマイズする方法はありますか?
- 25. フレックスプリローダーを隠す簡単な方法はありますか?
- 26. javascriptオブジェクトのすべてのキーのプロパティを取得する簡単な方法はありますか?
- 27. 以前のフィルタ結果に基づいてストリーム検索を簡素化する方法はありますか?
- 28. "elseif marathon"より簡単な方法はありますか?
- 29. ArrayListソート方法に基づいて
- 30. WebSphereに簡単にデプロイする方法はありますか?