Как суммировать поле из таблицы внуков в предложении LINQ to DataSet where? - PullRequest
1 голос
/ 03 марта 2010

Я думаю, что мне нужно сделать именно это, но вместо этого использовать LINQ to DataSets, потому что таблица «Транзакции» находится в DB2 и контекст данных отсутствует.

Запрос Linq по трем уровням таблиц для генерации суммы

Я установил два DataRelation для DataSet:
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 Ответ

1 голос
/ 05 марта 2010

Если нужные вам строки в таблице транзакций загружаются в 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")))
};
...