+1
+--2
+--3
+--4
+--5
こんなデータをforeachで1~5って取りたい場合ありますよね。
public static class SampleClass
{
public abstract class IChildData
{
public List Children;
}
public static IEnumerable<IChildData> フラットに取得する(IEnumerable<IChildData> src)
{
foreach (var dataNode in src)
{
yield return dataNode;
if (dataNode.Children != null)
if (dataNode.Children.Count != 0)
{
foreach (var node in フラットに取得する(dataNode.Children))
{
yield return node;
}
}
}
}
}
循環参照しちゃってるとforeach終わらないので注意して下さいね。