对linq这个查询感到困惑

时间:2015-03-02 15:38:50

标签: c# winforms linq

我有一个像这样的xml文件。

<Accounts>
    <Account Id="">
        <UserName/>
        <Password/>
        <AddingDate/>
        <AccountType/>
    </Account>
</Accounts>

我想要做的是,如果第一个元素的attaribute值不为空,则返回true,否则为false

private bool IsListEmpty(){    
    XDocument doc = XDocument.Load("UserAccounts.xml");

    var c = from p in doc.Descendants("Account") 
            where p.Element("Id").Value == "" 
            select p.Value;

    if(c==null)return......
}

但是我被困住了。我怎么能这样做

2 个答案:

答案 0 :(得分:2)

只需在LINQ上使用FirstOrDefault(),然后检查Id属性是否为空:

var account = doc.Descendants("Account").FirstOrDefault();
return account != null &&  !string.IsNullOrEmpty(account.Attribute("Id").Value)

答案 1 :(得分:1)

不确定我是否理解正确,但我认为.Any会做的。

XElement xelement = XElement.Load("UserAccounts.xml");
return xelement.Elements("Account").Where(x => string.IsNullOrEmpty((string)x.Element("Id"))).Any();

如果发现一个元素是&#34;&#34;

,则任何将返回true