我有一个对象集合objcol1(示例州的城市集合)和另一个对象集合objcol2(一个国家/地区的城市示例集合)。现在我正在查询objcol1,我想将它添加到objcol2。我可以通过迭代objcol1并逐个添加到objcol2来做到这一点,但是我可以直接将objcol1添加到objcol2中吗 的 objcol2.add(objcol1);
任何人都可以告诉我,如果没有迭代可以吗?如果是,请向我解释过程
答案 0 :(得分:15)
您可以使用Enumerable.Concat
扩展方法:
objcol1 = objcol1.Concat(objcol2)
我确信它实际上是在某个地方进行迭代,但你不需要编写代码就可以了。
注意:这仅适用于City
个对象相同的情况,或者您可以使用Select
映射对象。
答案 1 :(得分:9)
您还可以使用列表的AddRange
。有关详细信息,请参阅documentation。
var a = new List<string> { "1", "2" };
var b = new List<string> { "3", "4" };
a.AddRange(b);
// a would contain "1", "2", "3" and "4"
答案 2 :(得分:3)
是的,这可能取决于您的使用案例。如果您不关心“集合”类型是什么,那么您可以使用linq Concat命令创建一个新的枚举,当迭代时,它将包含两个集合中的项目。
var collection1 = new List<int> { 1, 2, 3 };
var collection2 = new [] { 4, 5, 6};
var concatenated = collection1.Concat(collection2);
另一方面,如果您需要将项目实际插入现有集合中,则需要进行迭代。
答案 3 :(得分:1)
实际上,您不需要新的var:
collection1.AddRange(collection2);
答案 4 :(得分:-1)
为此可以使用 List.AddRange
或 Enumerable.Concat
。
mainList.AddRange(collection);
mainList = mainList.Concat(collection);
AddRange
修改列表,而 Concat
返回一个新序列而不修改列表。