在List<;字符串>;存在于Dictionary中
本文关键字:Dictionary 存在 字符串 List lt gt | 更新日期: 2023-09-27 18:00:01
我有一个以字符串为键、以列表为值的字典。
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;
}
然而,我确实得到了错误。。。由于列表是只读的,因此无法将其分配给。
哪种方法可以更好地去除空白?
试试这个代码:
// 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);
});
您可以稍微修改代码以摆脱中间列表:
foreach (var kvp in dict)
{
for(int i = 0; i < kvp.Value.Count; i++)
{
kvp.Value[i] = kvp.Value[i].Trim();
}
}
这将修剪列表中所有字符串中的所有空白
您也可以这样做:
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
);