Как можно суммировать поле из таблицы внуков в предложении LINQ to DataSet where?
Я думаю, что мне нужно сделать именно это, но вместо этого использовать LINQ to DataSets, потому что таблица "Транзакции" находится в DB2 и отсутствует контекст данных.
Запрос Linq по трем уровням таблиц для генерации суммы
Я устанавливаю две DataRelations на 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 ответ
Решение
Если нужные вам строки в таблице транзакций загружаются в 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")))
};