get line number for XElement here

XDocument xdoc = XDocument.Load(file);
IEnumerable<XElement> categories = xdoc.Descendants("Category");
foreach (XElement category in categories)
{
    //get line number for element here...
}

Solution 1:

XElement (actually XObject) implements the IXmlLineInfo interface, so you can use it:

IXmlLineInfo info = category;
int lineNumber = info.LineNumber;

Note that line information is not always available, you need to call the HasLineInfo method to check if the information is available. You can specify LoadOptions.SetLineInfo when you load the document with XDocument.Load

Solution 2:

XDocument xdoc = XDocument.Load(file, LoadOptions.SetLineInfo);
IEnumerable<XElement> categories = xdoc.Descendants("Category");
foreach (XElement category in categories)
{
    //get line number for element here...
    string lineNumber = ((IXmlLineInfo)category).HasLineInfo() ? ((IXmlLineInfo)category).LineNumber : -1;
}