It works:
Func<DirectoryInfo, XElement[]> getDirectories = null;
getDirectories = di =>
(new []
{
new XElement("li", di.Name),
di.GetDirectories().Any()
? new XElement("ul",
from cdi in di.GetDirectories()
select getDirectories(cdi))
: null,
})
.Where(x => x != null)
.ToArray();
var xml = new XElement("ul",
getDirectories(
new DirectoryInfo(@"E:\Install\_.NET")));
In my examples directory, I got this output:
<ul>
<li>_.NET</li>
<ul>
<li>3DCollaborator</li>
<li>MercurialVSSProvider</li>
<li>MongoDB</li>
<li>sqlite</li>
<ul>
<li>sqlite-netFx35-binary-bundle-Win32-2008-1.0.74.0</li>
<li>sqlite-netFx35-binary-Win32-2008-1.0.74.0</li>
<li>sqlite-netFx40-binary-Win32-2010-1.0.74.0</li>
</ul>
</ul>
</ul>
source
share