我有2个列表,其定义是:
List<Type> filteredTypes = new List<Type>();
List<Type> interfaceTypes = new List<Type>();
当我的列表被填充时,我想在它们两个上得到一个循环,我的想法是在“循环”之前合并它们,所以我不必使用LINQ(不喜欢它.. 。-_-) 我检查了在线文档,我想我必须这样做:
filteredTypes.Concat(interfaceTypes);
我尽可能深地调试,并且在说明后我的列表是相同的...... 我错过了什么?
答案 0 :(得分:7)
concat函数returns
是一个新集合,它不会添加到现有集合中。
var allTypes = filteredTypes.Concat(interfaceTypes);
答案 1 :(得分:4)
见这里:.NET List<T> Concat vs AddRange
.Concat()
调用会创建一个新的List<T>
,因此您需要以下内容:
var mergedList = filteredTypes.Concat(interfaceTypes);
答案 2 :(得分:3)
Concat返回新列表而不修改任何原始列表。如果你想把它放在一个新的列表中,请执行以下操作:
List<Type> newList = filteredTypes.Concat(interfaceTypes);
如果要将其放在旧列表中,请使用AddRange:
filteredTypes.AddRange(interfaceTypes);
答案 3 :(得分:0)
为什么不使用AddRange?
filteredTypes.AddRange(interfaceTypes);
答案 4 :(得分:0)
IEnumerable<T>.Concat(IEnumerable<T>)
返回IEnumerable<T>.
试试这个:
var resultTypes = filteredTypes.Concat(interfaceTypes);
答案 5 :(得分:0)
你必须这样做:
var temp = firstList.Concat(secondList);
List<Type> finalList = temp.ToList<Type>();