【发布时间】:2013-02-17 12:37:48
【问题描述】:
我有一个字典,其中一个字符串作为键,一个列表作为值。
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;
}
但是我确实得到了错误...由于列表是只读的,因此无法分配给它。
哪种方法可以更好地去除空白?
【问题讨论】:
-
您得到的错误将是来自
foreach块中最后一行的编译时错误。你的kvp是KeyValuePair<,>,而Value属性有一个getter 但没有setter,所以你不能分配给它。相反,您可以说:kvp.Value.Clear(); /* empties list */ kvp.Value.AddRange(lstNoWhite); /* adds many values to list */还要考虑是否需要为dict中的每个kvp重用相同的lstNoWhite,甚至不使用lstNoWhite.Clear()。
标签: c# list dictionary trim