1

キーとして文字列、値としてリストを持つ辞書があります。

Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();

そのため、キーごとに、キーに関連付けられた複数の文字列値があります。問題は、リストの値に削除する必要がある空白が含まれていることです。私が行うことは、trim() メソッドを使用して各リスト値の値を別のリストに渡し、ループ後に元の値に戻すことです。リスト。

List<string> lstNoWhite = new List<string>();
foreach (var kvp in dict)
{

    for(int i = 0; i < kvp.Value.Count; i++)
    {
        lstNoWhite.Add(kvp.Value[i].Trim());
    }
    kvp.Value = lstNoWhite;
}

ただし、エラーが発生します...リストは読み取り専用であるため、割り当てられないという行に沿って。

空白を取り除くより良い方法はどれですか?

4

3 に答える 3

2

このコードを試してください:

// source dictionary
Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();

// target dictionary
Dictionary<string, List<string>> target = new Dictionary<string, List<string>>();

// using LINQ extension methods
dict.ToList().ForEach(i =>
{
    List<string> temp = i.Value.Select(x => x.Trim()).ToList();
    target.Add(i.Key, temp);
});
于 2013-02-17T12:47:34.827 に答える
2

コードを少し変更して、中間リストを取り除くことができます。

foreach (var kvp in dict)
        {
            for(int i = 0; i < kvp.Value.Count; i++)
            {
                kvp.Value[i] = kvp.Value[i].Trim();
            }
        }

これにより、リストからすべての文字列のすべての空白が削除されます

于 2013-02-17T12:43:08.847 に答える
0

これを行うこともできます:

Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();

// var --> Dictionary<string, List<string>>
var trimmedDict = dict.ToDictionary(
    keyValue => keyValue.Key, // The key
    keyValue => keyValue.Value.Select(s => s.Trim()).ToList() // The value, trim all the strings in the value-list
);
于 2013-02-17T12:47:52.340 に答える