如何在LINQ to DataSet where子句中将孙表中的字段求和?

时间:2010-03-03 17:08:26

标签: c# orm linq-to-dataset

我认为我需要做到这一点,而是使用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???
    };

我真的不知道如何处理金额。提前谢谢!

1 个答案:

答案 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")))
};