2
這是一個作業問題。幫助將foreach轉換爲Linq
我在我們的域模型上做了差異化,並且已經設置好了,以便我可以迭代檢查域內的certian差異的操作列表。我傳入差異函數以及對象圖的前後狀態,以在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>
的 - 因爲現在我的diff操作可以返回多個差異。像這樣..
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等價物。你能幫我嗎?
謝謝Jon Skeet。我現在有以下代替嵌套的foreach:
return from op in diffOperations
from diff in op(beforeState, afterState)
where diff.FoundDifference
select diff;