我有两个XML文件,代表两个关系表,两者之间有关系。 文件如下: Exam.XML
<?xml version="1.0" encoding="utf-8" ?>
<Exam>
<Student id='1'>
<result>100 </result>
</Student >
<Student id='2'>
<result>200 </result>
</Student >
</Exam>
Student.XML
<?xml version="1.0" encoding="utf-8" ?>
<Students>
<Student id='1'>
<name>John</name>
</Student >
<Student id='2'>
<name>Mark </name>
</Student >
,结果应为
StudentID StudentName结果
1 John 100
2 Mark 200
如何在c#中实现这一点? 注意:我的文件并不那么简单,因此合并它们将没有用处
答案 0 :(得分:1)
Linq2Xml可以在这里提供帮助。
var list = XDocument.Load("student.xml").Descendants("Student")
.Join(XDocument.Load("exam.xml").Descendants("Student"),
x => x.Attribute("id").Value,
y => y.Attribute("id").Value,
(s, e) => new{
Name = s.Element("name").Value,
Id = s.Attribute("id").Value,
Result = e.Element("result").Value
})
.ToList();
或与查询语法相同的东西
var query = from s in XDocument.Load("student.xml").Descendants("Student")
join e in XDocument.Load("exam.xml").Descendants("Student")
on s.Attribute("id").Value equals e.Attribute("id").Value
select new {
Name = s.Element("name").Value,
Id = s.Attribute("id").Value,
Result = e.Element("result").Value
};
var list = query.ToList();
答案 1 :(得分:-1)
在这种情况下,我加载2个数据表并以编程方式创建第三个
加载到数据表中可以这样做
DataTable newTable = new DataTable();
newTable.ReadXml("FILENAME.xml");
然后以编程方式创建一个新的数据表
DataTable table = new DataTable(tableName);
DataColumn column = new DataColumn("id", typeof(System.Int32));
column.AutoIncrement = true;
table.Columns.Add(column);
column = new DataColumn("item", typeof(System.String));
table.Columns.Add(column);
// Add ten rows.
DataRow row;
for (int i = 0; i <= 9; i++)
{
row = table.NewRow();
row["item"] = "item " + i;
table.Rows.Add(row);
}
table.AcceptChanges();
如果这不能回答你的问题(你需要更详细的解释),请对此进行评论并为你详细说明:)
请记住,如果问题有所帮助,为什么不继续进行标记