我有一个包含嵌套项目的列表,我想将值/节点从Category1移到同一级别的Category2。使用double for循环执行此操作需要花费大量时间。 如何使用LINQ简化并使其快速?
foreach (var item in masterlist) {
foreach (var item1 in item.Category1) {
item1.Category1 = item1.Category2;
item1.Category2 = null;
}
}
答案 0 :(得分:1)
您仍然需要使用foreach
,因为Linq仅关注迭代和查询,并且不应该用于引入副作用或动作(这是why Linq doesn't have a ForEach
or Do
extension method )。
请注意,由于item.Category1
在循环内被覆盖,因此您需要首先急切地评估Linq表达式。
尝试一下(假设您的列表项类型命名为ListItem
):
List<ListItem> allListItems = masterList
.SelectMany( li => li.Category1 )
.ToList();
foreach( ListItem item in listItems )
{
item.Category1 = item.Category2;
item.Category2 = null;
}