簡體   English   中英

XDocument linq 查詢中的 where 條件

[英]Where condition in XDocument linq query

我有一個代碼,如:

jobdetails.group = TM_item.Group_xml.ToString(); //XML
var xDoc = XDocument.Parse(jobdetails.group);
var data = xDoc.Root.Elements().OrderBy(x => (string)x.Attribute("name"));

XML:

<Groups>
      <Group name="Front0">
        <Room_type>Front</Room_type>
        <Dimension>Not available</Dimension>
        <Status>PENDING</Status>
        <Notes>None</Notes>
        <User>r2g</User>
        <Audio_length>00:00:00</Audio_length>
        <Image_count>1</Image_count>
        <Section_count>0</Section_count>
      </Group>
</Groups>

我想在xDoc.Root.Elements()放置 where 條件,

我試過xDoc.Root.Elements().OrderBy(x => (string)x.Attribute("name")).Where(x => (string)x.Attribute("User").Value == loggedin_user); 但它沒有給我輸出..我得到的Object reference not set to an instance of an object. 有什么建議嗎?

您正在訪問 Attribute("name") 的 Attribute("User"),然后您正在訪問用戶的屬性值。 其中之一為空。

嘗試構建一個查詢來查找缺少屬性名稱的元素,或者返回缺少 User 屬性的元素。 我想你會找到有罪的元素。

然后重新格式化您的查詢以進行保護,例如在訪問其屬性之前添加 Where(at => at != null)。

沒有結果時使用FirstOrDefault獲取空值:

XElement value =  xdoc.Descendants()
    .Elements("Group")
    .Where(i => i.Attribute("name").Value == "Front0")
    .OrderBy(i => i.Attribute("name").Value)
    .FirstOrDefault();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM