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

您可以稍微修改您的代码以摆脱中间列表:

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 回答
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 回答
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 回答