Как можно суммировать поле из таблицы внуков в предложении 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")))
};
Другие вопросы по тегам