わかりました、リンク クエリでユーザーのリストを返したいと思います。以下はXMLです
<section type="Users">
<User type="WorkerProcessUser">
<default property="UserName" value="Main"/>
<default property="Password" value=""/>
<default property="Description" value=""/>
<default property="Group" value=""/>
</User>
<User type="AnonymousUser">
<default property="UserName" value="Second"/>
<default property="Password" value=""/>
<default property="Description" value=""/>
<default property="Group" value=""/>
</User>
</section>
そして、動作しない私の現在のLINQクエリ。doc は XDocument です
var users = (from iis in doc.Descendants("section")
where iis.Attribute("type").Value == "Users"
from user in iis.Elements("User")
from prop in user.Descendants("default")
select new
{
Type = user.Attribute("type").Value,
UserName = prop.Attribute("UserName").Value
});
Object reference not set to an instance of an object
例外があります。誰が私が何を修正する必要があるか教えてもらえますか?
これは、間違ったプロパティ名を修正した後の2回目の試みです。ただし、これを使用しようとしたとき、または少なくともコンソールに書き込もうとしたときに、これは UserName 値を列挙していないようです。また、これは合計 8 つの結果を返します。ユーザーが 2 人しかいないため、結果は 2 つしかないはずです。
(from iis in doc.Descendants("section")
where iis.Attribute("type").Value == "Users"
from user in iis.Elements("User")
from prop in user.Descendants("default")
select new
{
Type = user.Attribute("type").Value,
UserName = (from name in prop.Attributes("property")
where name.Value == "UserName"
select name.NextAttribute.Value).ToString()
});