我将使用 LinqToSql 和 LinqToXml 的组合来实现这一点,类似于以下内容:
var query = new XDocument(
new XElement("Results", from i in context.my_master_tbl
where i.ItemDate > DateTime.Now.AddDays(-7)
select new XElement("MasterItem",
new XAttribute("MasterName", i.Name),
from c in i.my_child_tbl
group c by c.Date into g
select new XElement("Child",
new XAttribute("Date", g.Key),
new XAttribute("SumField", g.Sum(d => d.FieldToSum))
)
)));
这是将生成的一些结果 Xml:
<Results>
<MasterItem MasterName="A">
<Child Date="2009-01-15T00:00:00-06:00" SumField="491470" />
</MasterItem>
<MasterItem MasterName="B">
<Child Date="2009-01-29T00:00:00-06:00" SumField="491526" />
</MasterItem>
<MasterItem MasterName="C">
<Child Date="2009-01-15T00:00:00-06:00" SumField="1965960" />
<Child Date="2009-07-14T00:00:00-05:00" SumField="-27" />
</MasterItem>
<MasterItem MasterName="D" />
<MasterItem MasterName="E" />
</Results>
我确定您需要根据您计划使用的布局对此进行一些更改,但希望它会给您一些想法。
这也假设您的关系是在您的主表和子表之间设置的。如果不是,则需要进行一些其他更改。