Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 合并新对象_C#_Linq - Fatal编程技术网

C# 合并新对象

C# 合并新对象,c#,linq,C#,Linq,我正在尝试向ToArray()创建的数组中添加单个项,不幸的是,我找不到任何有效的方法来添加新对象,以下是我迄今为止尝试的内容: List<MyObject> MyList = new List<MyObject>(); MyList.Add(new MyObject { MyParam = "1" }); MyList.ToArray().Concat(new MyObject { MyParam = "2" }); List MyList=new List();

我正在尝试向ToArray()创建的数组中添加单个项,不幸的是,我找不到任何有效的方法来添加新对象,以下是我迄今为止尝试的内容:

List<MyObject> MyList = new List<MyObject>();
MyList.Add(new MyObject { MyParam = "1" });

MyList.ToArray().Concat(new MyObject { MyParam = "2" });
List MyList=new List();
添加(新的MyObject{MyParam=“1”});
MyList.ToArray().Concat(新的MyObject{MyParam=“2”});
我似乎无法直接连接到新的MyObject,有什么方法可以做到这一点吗

我知道我可以创建一个数组并使用concat将数组a添加到数组B中,但在我的完整实现中,我需要在concat方法下创建一个新对象


也许Concat甚至不是正确的前进方向?如果您有任何建议,我们将不胜感激。

您的问题并不清楚您到底想做什么。如果需要可调整大小的有序集合,则使用
List
比使用数组更好。要添加项目,只需调用
add()

在您发布的代码中,
Concat()
方法是一个扩展方法,它返回一个新的可枚举对象。它不会修改原始文件。如果您想要一个数组,并且确实想使用
Concat()
,可以执行以下操作:

MyObject[] array = MyList.Concat(new [] { new MyObject { MyParam = "2" } }).ToArray();
我不知道你为什么会喜欢这个:

MyList.Add(new MyObject{ MyParam = "2" });
MyObject[] array = MyList.ToArray();
在我看来,后者更好,因为它更有效,更清楚地表达了你实际上在做什么

如果您确实想要一个数组,并且只想要一个数组,则可以使用
array.Resize()

我强烈反对使用这样的代码。这是一种管理可调整大小的集合的效率极低的方法。但它会起作用,坦率地说,它最符合您要求的规范


如果以上信息不足以解决您的问题,请通过编辑问题来改进您的问题,以便更清楚地描述您想做什么。

数组无法调整大小。您应该使用
List
而不是数组。是否将它们合并到一个索引中??MyList已经是MyObject的列表。如果您试图添加更多内容,只需转到MyList.add(newmyobject{MyParam=“2”});您可能希望将您的
MyList.ToArray()
调用替换为
MyList.ToList()
调用,然后使用
List.Add
方法添加该项
MyObject[] array = new [] { new MyObject { MyParam = "1" } };

Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = new MyObject { MyParam = "2" };