【发布时间】:2014-09-12 08:39:20
【问题描述】:
让我们创建一个名为 i_Changes 的变量,其类型为 List<List<int>>,它具有以下值:
[1] = 1,2
[2] = 3,4,6
[3] = 4,8,15
此变量存储在类 myClass 中,如下所示:
Public Class myClass
{
public DateTime selectedDate {get; set}
public List<List<int>> i_Changes {get;set;}
}
现在我们有了另一个名为 i_Holder 的变量,其类型为 List<List<List<int>>>,它应该保存 i_Changes 的值(这意味着在每次迭代之后,我想存储来自 i_Changes 的确切数字,以便以后(在处理之后) 我可以将它们全部显示给网格中的用户。
每次迭代后我要存储新变量的操作如下:
i_Holder.Add(myClass.Select(n=>n.i_Changes).ToList();
我发现当我像这样向列表中添加项目时,它们会一直与原始 i_Changes 绑定,这意味着在每次迭代之后(当 i_Changes 下的值发生变化时),i_Holder 下的所有值相应地更改 -> 这意味着我有 n 个具有完全相同值的项目列表,例如当前 i_Changes。
我该如何解决这个问题?
另外,如果您认为 List<List<List<int>>> 不是一个好主意,请随时纠正我,因为这是我唯一能想到的。
谢谢
编辑:
我发现当我创建新的List<List<int>> 并将每个值手动复制到该列表时,绑定就会丢失;但是我认为这不是最好的做法(每次迭代后创建新列表)。有没有更好的方法来做到这一点?
【问题讨论】:
-
请为您的问题分享更多代码。
-
执行该操作的代码有 600 多行。在迭代结束时,我正是这样做的(向列表中添加新值),所以实际上没有其他相关代码
-
对于
i_Holder,我建议你使用List<int>。和i_Holder=i_Holder.Contact(myClass.SelectMany(n=>n.i_Changes).ToList()); -
.Contact 代表什么?我在 LINQ 命令中找不到它;如果我没记错的话,Select many 也会简单地将结果放在一维数组中;但我需要保留数组的结构
-
你的示例代码真的很奇怪:
i_Holder.Add(myClass.Select(n=>n.i_Changes).ToList();首先它不能编译,其次如果myClass是myClass的一个实例,你不能在它上面做一个Select:这不是IEnumerable<myClass>