检查XElement(记录)是否存在?

MSa*_*ika 4 c# linq linq-to-xml

如何检查是否XElement具有Record&INVID属性?我的函数只返回单个XElement.即

<INVENTORY>
  <Record>
    <INVID>1315</INVID>
    <INVNAME>TEST LOCATIONTEST</INVNAME>
    <HOSPNAME>TEST LOCATION</HOSPNAME>
    <INVTYPE>CLINICAL</INVTYPE>
    <INVDT>2013-09-30T09:30:00</INVDT>
    <INVDEF>YES</INVDEF>
    <INVACT>YES</INVACT>
    <UPDDTTM />
    <UPDUSR />
    <ENBREF>true</ENBREF>
    <INVPWD>101315</INVPWD>
  </Record>
</INVENTORY>


XElement xInventory = GetDefaultInventory();        
bool hasInventory = xInventory.Elements("INVID").Any();  //What to do here ? 

if (hasInventory)
{  
    //TO DO Some action 
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*kiy 10

如果要检查inventory元素是否Record包含带INVID元素的元素,则可以使用XPath:

XElement inventory = GetDefaultInventory();
XElement invid = inventory.XPathSelectElement("Record/INVID");
if (invid == null) 
    // not exist
Run Code Online (Sandbox Code Playgroud)

或者LINQ方式:

bool exists = inventory.Elements("Record").Elements("INVID").Any();
Run Code Online (Sandbox Code Playgroud)

  • 我尝试使用 LINQ,工作正常!谢谢你@Sergey Berezovskiy (2认同)