【发布时间】:2016-07-02 05:16:21
【问题描述】:
这是我的嵌套 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 做到这一点,如第一个代码块所示......
【问题讨论】:
-
除了不是
LINQ的ToList,ForEach是List<T>上的一个方法。 Linq 是用于查询数据,而不是修改数据。 -
对不起,我误解了这个概念。但是你能告诉我在这种情况下如何使用 ForEach 吗?
-
您为什么要这样做,您最初拥有它的方式要清楚得多。此外,任何 LINQ 版本都会因为您必须进行的
.ToList()调用耗尽所有额外内存而变慢。 -
"这是我的嵌套 foreach 查询" 这根本不是一个查询。代码应保持原样。