【发布时间】:2021-12-31 02:10:39
【问题描述】:
在我最近的项目中,我试图制作一个字典,其中键作为字符串,值作为字符串列表(列表),并使用 for 循环在字典中添加值, 但问题是,在第一次迭代后,当我为第二次迭代更新列表时,它会在第一个键值对中自动更改。 例如,在第一次迭代中,它将键保存为苹果,将值保存为列表 {cucumber,chilli,tomato,apple} 它很好,但在第一次迭代后,当我将列表更新为 {cucumber,chilli,tomato,apple,mango} 并将其保存到第二个关键 mango 它也将第一个值更新为 {cucumber,chilli,tomato,apple,mango}。
var mylist = new List<string>()
{
"cucumber",
"chilli",
"tomato"
};
var yourlist = new List<string>()
{
"apple",
"mango",
"banana"
};
var dict = new Dictionary<string, List<string>>();
foreach (var i in yourlist)
{
mylist.Add(i);
dict.Add(i,mylist);
}
foreach(var d in dict.Keys)
{
foreach(var l in dict[d])
{
Console.WriteLine(l);
}
}
【问题讨论】:
-
Caius 在回答中提到了问题。但这不仅仅是为了解决这个问题。但是通过查看代码看起来很奇怪,我没有得到你想要通过这段代码实现的目标?你能解释一下吗
-
实际上我想从另一个表中添加用户名和值,这是访问列表,因此对于每次迭代我都会更改字符串列表的值(访问),但它给出了最后更新的列表访问与键关联的所有值
-
这是我的实际代码
-
for(int i = 0; i x.UserRowId == user[i].RowID).ToList (); foreach (var j in ll) { var forumName = forum.Where(x => x.RowId == j.ForumRowId).FirstOrDefault().ForumName;论坛列表。添加(论坛名称); } dict[user.ElementAt(i).FirstName] = forumList;论坛列表.清除(); }
标签: c# .net list dictionary asp.net-core