我想将对象从一个列表复制到另一个列表中并在不更改原始列表的情况下对其进行编辑。
Dim myList1 as New List(Of myObject)
myList1.Add(New myObject() With {.foo = 1, .bar = 0, .baz = 0})
Dim myList2 as New List(Of myObject)
myList2.AddRange(myList.Select(Function(x) x.bar = 1))
myList2.AddRange(myList.Select(Function(x) x.baz = 1))
期望myList2
:
{.foo = 1, .bar = 1, .baz = 0}, {.foo = 1, .bar = 0, .baz = 1}
实际myList2
:
{.foo = 1, .bar = 1, .baz = 0}, {.foo = 1, .bar = 1, .baz = 1}
我究竟做错了什么?
我很难相信 LINQ 本身不能做到这一点,而且我必须编写一个自定义.Clone()
扩展,就像这篇 SO 帖子推荐的那样。