【发布时间】:2009-11-25 15:55:14
【问题描述】:
这是一道作业题。
我正在对我们的域模型进行差异分析,并且我已经对其进行了设置,以便我可以迭代一个操作列表,以检查域内的某些差异。我传入差分函数和对象图的前后状态以在 DiffContext 中生成结果——稍后用于设置调用另一个服务的有效负载。但我做了一些更改,需要 Linq 语法方面的帮助
所以,我有以下代码...
public static IEnumerable<DiffContext> GetFirstDifference<T>(IEnumerable<Func<T, T, DiffContext>> diffOperations, T beforeState, T afterState)
{
return from op in diffOperations
let diff = op(beforeState, afterState)
where diff.FoundDifference
select diff;
}
我修改为使用Func<T, T, IEnumerable<DiffContext>> 而不是以前的Func<T, T, DiffContext> - 因为现在我的差异操作可以返回多个差异。就这样..
public static IEnumerable<DiffContext> GetFirstDifference<T>(IEnumerable<Func<T, T, IEnumerable<DiffContext>>> diffOperations, T beforeState, T afterState)
{
foreach (var op in diffOperations)
{
foreach (var diff in op(beforeState, afterState))
{
yield return diff;
}
}
}
但是现在我有了这个嵌套的 foreach,我希望有人帮助我将它转换为 Linq 等价物。你能帮忙吗?
感谢乔恩·斯基特。我现在有以下内容,而不是嵌套的 foreach:
return from op in diffOperations
from diff in op(beforeState, afterState)
where diff.FoundDifference
select diff;
【问题讨论】:
标签: linq