以下代碼創建一箇中間實例List<string>
並在yield返回之前向其添加值。有沒有避免創建實例並直接返回單元格值的好方法?產量返回IEnumerable <IEnumerable <...>>
IEnumerable<IEnumerable<string>> GetStrValues()
{
......
foreach (var r in rows)
{
var row = new List<string>();
foreach (var c in r.Cells())
{
var value = getCellStr(c);
row.Add(value);
}
yield return row;
}
}
}
奇怪的是,如果我想平坦的結果爲'IEnumerable',我應該改變第一個'.Select('到'.SelectMany('? –
ca9163d9
@ dc7a9163d9:是的,這正是'SelectMany'是for,並且仍然使用延遲執行,所以這就是你應該用來如果你的意圖是平坦的結果。 – Groo