我认为我需要做到这一点,而是使用LINQ to DataSets,因为“Transactions”表在DB2中并且没有数据上下文。
Linq query across three levels of tables to generate sum
我在DataSet上设置了两个DataRelations:
1.将类别(我的例子中的ds.tables [0])与产品(ds.tables [1])相关联
2.将产品与交易联系起来(ds.tables [2])
var query = from x in ds.tables[0].AsEnumerable()
orderby x.Field<int>("Priority")
select new {
Name = x.Field<string>("Text"),
Amount = //maybe using GetChildRows here???
};
我真的不知道如何处理金额。提前谢谢!
答案 0 :(得分:1)
如果在Transactions表中需要的行是用ds加载的,那么我认为你可以这样做:
DataRelation relationToProducts;
DataRelation relationToTransactions;
var query = from x in ds.tables[0].AsEnumerable()
orderby x.Field<int>("Priority")
select new {
Name = x.Field<string>("Text"),
Amount = x.GetChildRows(relationToProducts)
.Sum(product => product.GetChildRows(relationToTransactions)
.Sum(tx => tx.Field<decimal>("Amount")))
};