static int GetElementIndex(XElement element)
{
XNode parentNode = element.Parent;
if (parentNode is XDocument)
{
return 1;
}
XElement parent = (XElement)parentNode;
int index = 1;
foreach (XElement candidate in parent.Elements())
{
if (candidate is XElement && candidate.Name == element.Name)
{
if (candidate == element)
{
return index;
}
index++;
}
}
throw new ArgumentException("Couldn't find element within parent");
}
}