使用Concat组合列表
我有一些主要目的的代码是将多个像列表组合到一个主列表中以返回View。
ActivityAuditDetails searchParams = new ActivityAuditDetails();
ActivityAuditDetails finalResults = new ActivityAuditDetails();
List<string> finalChangedColumns = new List<string>();
List<string> finalOldValues = new List<string>();
List<string> finalNewValues = new List<string>();
string finalAuditAction = string.Empty;
List<int> auditKeys = AuditIdentityId.Split(',').Select(int.Parse).ToList();
string url = "/Audit/GetActivityAuditDetails";
try
{
foreach (int auditKey in auditKeys)
{
searchParams.AuditIdentityId = auditKey;
ActivityAuditDetails result = // SOME METHOD THAT RETURNS RESULTS AS IT SHOULD;
finalChangedColumns.Concat(result.ChangedColumns);
finalAuditAction = result.AuditAction;
finalOldValues.Concat(result.OldValues);
finalNewValues.Concat(result.NewValues);
}
finalResults.ChangedColumns = finalChangedColumns;
finalResults.AuditAction = finalAuditAction;
finalResults.OldValues = finalOldValues;
finalResults.NewValues = finalNewValues;
}
catch (Exception e)
{
e.ToLog();
}
return View(finalResults);
我可以看到结果对象被填充,因为它应该在调试器中。 我认为Concat方法可以合并列表,但是我在foreach循环中的最终值永远不会更新递增(列表计数保持为零)。
还有另一种方法可以做到这一点,还是我有早晨的脑屁? 我的问题不是关于差异,因为我知道他们。 我只是暂时失去了理智。
你可能想使用AddRange
而不是Concat
。
前者将数据直接添加到列表中。 后者将数据连接成一个新的IEnumerable。
但是因为你没有将Concat
的结果分配给任何东西(例如var g = finalChangedColumns.Concat(result.ChangedColumns);
),你的Concat
调用实际上什么都不做。
List<T>.AddRange(IEnumerable<T> collection)
(链接到信息)可能做你在找什么,对吧?
将指定集合的元素添加到List的末尾。
从文档:
string[] input = { "Brachiosaurus",
"Amargasaurus",
"Mamenchisaurus" };
List<string> dinosaurs = new List<string>();
dinosaurs.AddRange(input);
//The list now contains all dinosaurs from the input string array
链接地址: http://www.djcxy.com/p/52753.html