以下是我使用嵌套foreach的查询:
foreach (Order order in xOrders)
{
foreach (OrderItemDetail oid in order.OrderItemDetails)
{
db.Entry(oid).Reload();
}
foreach (Dispatch dispatch in order.Dispatches)
{
foreach (DispatchItemDetail did in dispatch.DispatchItemDetails)
{
db.Entry(did).Reload();
}
db.Entry(dispatch).Reload();
}
db.Entry(order).Reload();
}
现在,我想将其转换为纯linq,所以我至少更安全,因为Enumeration无法继续,因为Collection已更改。
我知道,如果有1个foreach,我可以将其转换为LINQ,如:
foreach查询:
foreach (Order order in xOrders)
{
db.Entry(order).Reload();
}
LINQ查询:
xOrders.ToList().ForEach(x => db.Entry(x).Reload());
但我想知道你如何为嵌套的foreach做到这一点,如第一个代码块所示......
答案 0 :(得分:3)
ForEach将委托作为参数。所以你可以编写静态方法或匿名函数。我正在用Anonymus方法写作。但是上面的方法是比使用ForEach()
更好的方法 xOrders.ToList().ForEach((x) => {
x.OrderItemDetails.ToList().ForEach(o => db.Entry(o).Reload());
x.Dispatches.ToList().ForEach((D) => {
D.DispatchItemDetails.ToList().ForEach(DI => db.Entry(DI).Reload());
db.Entry(D).Reload();
});
db.Entry(x).Reload();
});