如何将新对象插入匿名数组?

uza*_*y95 5 c# linq

如何将新对象插入匿名数组?

var v = new[]
            {
                new {Name = "a", Surname = "b", Age = 1},
                new {Name = "b", Surname = "c", Age = 2}
            };
Run Code Online (Sandbox Code Playgroud)

我知道首先我们设置数组的限制(大小).

我将它转换为List.要插入新对象.

v.ToList().Add(new { Name = "c", Surname = "d", Age = 3 });
Run Code Online (Sandbox Code Playgroud)

但我仍然在v变量中有2个元素.第三个元素去了哪里?

但我无法分配给另一个List变量.

List newV = v.ToList();
Run Code Online (Sandbox Code Playgroud)

ang*_*son 7

.ToList()生成一个新的列表对象,将输入源的所有元素(数组)添加到其中.因此,原始阵列根本不会改变.

您不能向现有数组添加元素,它具有固定大小,您唯一能做的就是将新数组放回变量中.

我没试过,但试试这个:

var l = v.ToList();
l.Add(...); // your existing add code
v = l.ToArray();
Run Code Online (Sandbox Code Playgroud)

但是,请注意,此时您应该首先考虑为什么要使用匿名类型,我会认真考虑创建一个命名类型,并使用列表开始.

请注意,您不能写,List l = v.ToList();因为列表的类型是通用的(它将返回一些List<some-anonymous-type-here>,而不仅仅是List.使用匿名类型,您需要使用var.