[C#] Linqと再帰でファイルの一覧表示(2)のLinqのクエリ式をメソッド構文で書き直してみた。

Func<DirectoryInfo, IEnumerable<string>> FileListUp = null;	// (1)こうしておかないとエラーになる
FileListUp = dirInfo =>
{
    return dirInfo.GetDirectories().Select(d => FileListUp(d))
        .SelectMany(f => f)			// (2)ここ、なんか他の書き方ないのかな?
        .Concat(dirInfo.GetFiles().Select(f => f.FullName));
};

var di = new DirectoryInfo(".");

var list = FileListUp(di);

// 表示する
list.ToList().ForEach(s => Console.WriteLine(s));

(2)の部分のなんか微妙なんだけど、他の書き方ないのかな?