xml ステートメントでメッセージにサブカテゴリを追加しようとしています。これを行う方法はありますかGroupMessages -> Message -> GroupMessage
:
var groups = xDoc.Descendants("Group")
.Select(n => new
{
GroupName = n.Element("GroupName").Value,
GroupHeader = n.Element("GroupHeader").Value,
TimeCreated = DateTime.Parse(n.Element("TimeAdded").Value),
Tags = n.Element("Tags").Value,
Messages = n.Element("GroupMessages").Value
//line above
})
.ToList();
dataGrid2.ItemsSource = groups;
私のメソッド GroupMessages には MessageID と GroupMessage の両方が含まれており、1 つのコンテナー内のデータグリッドに両方がリストされています。だから私はこれを試しましたが、何もリストされていません:
Messages = n.Descendants("GroupMessages").Select(nd => nd.Element("GroupMessage").Value)
私のXMLは次のようになります。
<Group>
<TimeAdded>2012-04-27T10:23:50.7153613+01:00</TimeAdded>
<GroupName>Group</GroupName>
<GroupHeader>Header</GroupHeader>
<GroupMessages>
<Message>
<MessageID>1</MessageID>
<GroupMessage>Message</GroupMessage>
<MessageGroup/>
</Message>
</GroupMessages>
</Group>
私も試しました:
Messages = n.Descendants("GroupMessages").Select(nd => nd.Descendants("Message").Select(nde => nde.Element("GroupMessage").Value))
無駄に?
アップデート:
private void ListGroups_Click(object sender, RoutedEventArgs e)
{
string uriGroup = "http://localhost:8000/Service/Group";
XDocument xDoc = XDocument.Load(uriGroup);
var groups = xDoc.Descendants("Group")
.Select(n => new
{
GroupName = n.Element("GroupName").Value,
GroupHeader = n.Element("GroupHeader").Value,
TimeCreated = n.Element("TimeAdded").Value,
Tags = n.Element("Tags").Value,
Messages = n.Element("GroupMessages").Descendants("Message").Select(nd => new
{
//Id = nd.Element("MessageID").Value,
Message = nd.Element("GroupMessage").Value
}).FirstOrDefault()
})
.ToList();
dataGrid2.ItemsSource = groups;
}
残念ながら、このメソッドはデータグリッドのセル内に「コレクション」を表示します。ToArray を試すと、セル内に配列メッセージが表示されます。GroupMessage を実際に表示する方法はありますか? データグリッドの子要素の設定方法がわからない?