nightshadz
asked on
LINQ to XML - How to tell if the current element is the first element
I have the following XML where I am extracting all entry elements and looping over them as follows:
How do I check if entry is the first entry element in entries?
How do I check if entry is the first entry element in entries?
var entries = (from entry in doc.Elements("entry")
select entry);
foreach (var entry in entries)
{
//...some code...
//check if entry is the first entry element in entries
//(thought of using an extension method but i'm not sure how to do the comparison)
}
<log>
<entry timestamp="2015043014444383" actor="1234" authenticatedactor="1234" session="" effective="20150401" caller="Job.CopyJob" action="Create" type="create" s="HCM" id="014cfdb3-1d16-0000-0000-a23b4e08dd31">
<field name="HROrganization" t="0" s="4" d="0">
<nv><![CDATA[ABC]]></nv>
</field>
<field name="Position" t="1" s="9" d="0">
<nv><![CDATA[442]]></nv>
</field>
<field name="ShortDescription" t="30" s="20" d="0">
<nv><![CDATA[210007A]]></nv>
</field>
<field name="Description" t="30" s="60" d="0">
<nv><![CDATA[Security Coordinator]]></nv>
</field>
<field name="Active" t="41">
<nv><![CDATA[true]]></nv>
</field>
<field name="Summary" t="38">
<nv />
</field>
<field name="Responsibilities" t="38">
<nv />
</field>
<field name="OtherInformation" t="38">
<nv />
</field>
<field name="PositionDescriptionDate" t="5">
<nv><![CDATA[00000000]]></nv>
</field>
<field name="HROrganizationUnit" t="1" s="6" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="Job" t="1" s="9" d="0">
<nv><![CDATA[442]]></nv>
</field>
<field name="Location" t="0" s="20" d="0">
<nv />
</field>
<field name="PositionLevel" t="0" s="20" d="0">
<nv />
</field>
<field name="PositionFamily" t="0" s="20" d="0">
<nv />
</field>
<field name="PositionCategory" t="0" s="20" d="0">
<nv />
</field>
<field name="PositionSubCategory" t="0" s="20" d="0">
<nv />
</field>
<field name="WorkSchedule" t="0" s="20" d="0">
<nv />
</field>
<field name="Shift" t="1" s="1" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="AnnualHoursPer1FTE" t="1" s="4" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="DirectSupervisor" t="1" s="9" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="IndirectSupervisor" t="1" s="9" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="PositionIsSupervisor" t="1" s="9" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="SynchronizedToSupervisor" t="41">
<nv><![CDATA[false]]></nv>
</field>
<field name="BargainingUnit" t="0" s="20" d="0">
<nv />
</field>
<field name="Union" t="0" s="20" d="0">
<nv />
</field>
<field name="PayRateType" t="0" s="1" d="0">
<nv />
</field>
<field name="PayRateCurrency" t="0" s="5" d="0">
<nv />
</field>
<field name="PayRate" t="2" s="18" d="6">
<nv><![CDATA[0]]></nv>
</field>
<field name="PayFrequency" t="1" s="1" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="FTE" t="2" s="7" d="6">
<nv><![CDATA[0]]></nv>
</field>
<field name="CostCenter" t="0" s="30" d="0">
<nv />
</field>
<field name="PaymentSchedule" t="0" s="20" d="0">
<nv />
</field>
<field name="NumberOfMonths" t="1" s="2" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="SalaryStructure" t="0" s="20" d="0">
<nv><![CDATA[NE]]></nv>
</field>
<field name="SalaryStructureGrade" t="1" s="3" d="0">
<nv><![CDATA[17]]></nv>
</field>
<field name="GeographicDifferentialCode" t="0" s="20" d="0">
<nv />
</field>
<field name="StepAndGradeSchedule" t="0" s="20" d="0">
<nv />
</field>
<field name="PayGrade" t="1" s="4" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="PayStep" t="1" s="6" d="0">
<nv><![CDATA[0]]></nv>
</field>
<field name="KeyPosition" t="41">
<nv><![CDATA[false]]></nv>
</field>
<field name="KeyPositionReason" t="0" s="20" d="0">
<nv />
</field>
<field name="CriticalPosition" t="41">
<nv><![CDATA[false]]></nv>
</field>
<field name="CriticalPositionReason" t="0" s="20" d="0">
<nv />
</field>
<field name="BenchStrength" t="1" s="2" d="0">
<nv><![CDATA[0]]></nv>
</field>
</entry>
<entry timestamp="2015043014471892" actor="1234" authenticatedactor="1234" session="" effective="20150401" caller="Job.Update" action="UpdateFromJob" type="update" s="HCM" id="014cfdb3-1d16-0000-0000-a2d24e08dd31">
<field name="SalaryStructure" t="0" s="20" d="0">
<ov><![CDATA[NE]]></ov>
<nv><![CDATA[EXEMPT]]></nv>
</field>
</entry>
<entry timestamp="2015043015052337" actor="1234" authenticatedactor="1234" session="" effective="20150401" caller="Position.Update" action="Update" type="update" s="HCM" id="014cfdb3-1d16-0000-0000-a61f4e08dd31">
<field name="HROrganizationUnit" t="1" s="6" d="0">
<ov><![CDATA[0]]></ov>
<nv><![CDATA[18]]></nv>
</field>
<field name="Location" t="0" s="20" d="0">
<ov />
<nv><![CDATA[xyz]]></nv>
</field>
<field name="PositionLevel" t="0" s="20" d="0">
<ov />
<nv><![CDATA[1]]></nv>
</field>
<field name="PositionFamily" t="0" s="20" d="0">
<ov />
<nv><![CDATA[PROFESSIONAL]]></nv>
</field>
<field name="DirectSupervisor" t="1" s="9" d="0">
<ov><![CDATA[0]]></ov>
<nv><![CDATA[42]]></nv>
</field>
<field name="CostCenter" t="0" s="30" d="0">
<ov />
<nv><![CDATA[210007]]></nv>
</field>
</entry>
<entry timestamp="2015043015060462" actor="1234" authenticatedactor="1234" session="" effective="20150401" caller="Position.Update" action="Update" type="update" s="HCM" id="014cfdb3-1d16-0000-0000-a6984e08dd31">
<field name="AnnualHoursPer1FTE" t="1" s="4" d="0">
<ov><![CDATA[0]]></ov>
<nv><![CDATA[2080]]></nv>
</field>
<field name="PayRateType" t="0" s="1" d="0">
<ov />
<nv><![CDATA[2]]></nv>
</field>
<field name="PayFrequency" t="1" s="1" d="0">
<ov><![CDATA[0]]></ov>
<nv><![CDATA[2]]></nv>
</field>
<field name="FTE" t="2" s="7" d="6">
<ov><![CDATA[0.000000]]></ov>
<nv><![CDATA[1.000000]]></nv>
</field>
<field name="PaymentSchedule" t="0" s="20" d="0">
<ov />
<nv><![CDATA[M-_]]></nv>
</field>
<field name="GeographicDifferentialCode" t="0" s="20" d="0">
<ov />
<nv><![CDATA[ZONE NYC]]></nv>
</field>
</entry>
<entry timestamp="2015043018142456" actor="1234" authenticatedactor="1234" session="" caller="Position.Update" action="Update" type="update" s="HCM" id="014cfdb3-1d16-0000-0000-c0494e08dd31">
<field name="DirectSupervisor" t="1" s="9" d="0">
<ov><![CDATA[42]]></ov>
<nv><![CDATA[159]]></nv>=
</field>
</entry>
</log>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Very good. Have a great day.
ASKER
You too, Fernando. Thanks again for all your help!
ASKER
entries.Descendants("entry
entries.Elements("entry").
... and would always get null back and didn't know what was going on.
I turned your suggestion into an extension method so now I can just call it as.
bool first = entry.IsFirstEntry(entries
Open in new window