Linq noob здесь. Как это исправить?Linq - Группировка с расчетами суммы
var result = (from row in rulestable.AsEnumerable()
let sup = row.Field<int>("Supplier")
let amo = row.Field<decimal>("Amount")
let adv = row.Field<decimal>("Advance")
let bal = row.Field<decimal>("Balance")
let vat = row.Field<decimal>("VatRate")
group row by new { sup, vat } into grp
select new
{
Supplier = grp.Key.sup,
Amount = grp.Sum(grp => grp["amo"]),
Advance = grp.Sum(grp => grp["adv"]),
Balance = grp.Sum(grp => grp["bal"]),
VatRate = grp.Key.vat
}).ToList();
Я хочу сгруппировать свой «управляемый» массив данных на 2 столбцах, Поставщике и VatRate. Сумма, аванс и баланс результата должны быть установлены на сумму всех столбцов, которые были сгруппированы.
Я получаю сообщение об ошибке - «аргументы типа не могут быть выведены из использования» на grp.Sum. Тем не менее, я думаю, что это выражение неверно - я думаю, что он будет суммировать столбцы результатов, а не исходные столбцы, как я хочу.
Пример:
Входной DataTable:
Поставщик, Сумма, заранее, баланс, VatRate
S1, 10, 5, 5, 1
S1, 10, 5, 5, 1
Ожидаемые результаты:
S1, 20, 10, 10, 1
Каков наилучший способ сделать это?
Ну, это не показывает никаких ошибок intellisense. Это хорошо. Правильно ли это: Amount = grp.Sum (g => (десятичный) g ["amo"])? – Kev
Да, они оба работают в LinqPad для меня. – akatakritos
(десятичный) g ["amo"] завершится неудачно, потому что "amo" не является именем одного из столбцов в исходной таблице. – akatakritos