SUM и GROUPBY лямбда-выражение на DataDomainService
У меня есть приложение Silverlight и представление сетки, привязанное к элементу управления domaindatasource, и я запрашиваю представление из источника данных домена, используя два параметра, но из результата мне нужно сложить 4 столбца, сгруппированных по остальным.
Мой класс метаданных:
internal sealed class vwAplicacoesMetadata
{
// Metadata classes are not meant to be instantiated.
private vwAplicacoesMetadata()
{
}
public Nullable<int> CodInternoCliente { get; set; }
public Nullable<int> CodTipoOper { get; set; }
public string CPFCNPJCliente { get { return this.CPFCNPJCliente; } set { String.Format("{0,-14}", value); } }
public string TipoClientePFPJ { get; set; }
public string NomeCliente { get; set; }
public DateTime DataOper { get; set; }
public decimal LCQtde { get; set; }
public decimal LCValor { get; set; }
public decimal LDQtde { get; set; }
public decimal LDValor { get; set; }
}
}
И функция IQueryable мне нужно использовать выражения groupby и sum:
public IQueryable<vwAplicacoes> GetVwAplicacoesPorData(DateTime pstrDataInicio, DateTime pstrDataFinal)
{
return this.ObjectContext.vwAplicacoes.Where(d => d.DataOper > pstrDataInicio && d.DataOper < pstrDataFinal)
}
Это работает, и теперь мне нужно сгруппировать по CPFCNPJCliente, NomeCliente, TipoClientePFPJ, CodInternoCliente и CodTipoOper, и суммировать поля LCValor, LCQtde, LDValor, LDQtde.
Любое предложение?
1 ответ
Решение
Попробуй это:
return this.ObjectContext.vwAplicacoes
.Where(d => d.DataOper > pstrDataInicio && d.DataOper < pstrDataFinal)
.GroupBy(x => new {x.CPFCNPJCliente,x.NomeCliente,x.TipoClientePFPJ,x.CodInternoCliente,x.CodTipoOper})
.Select(k => new {key = k.Key,
totalLCValor = k.Sum(x=>x.LCValor),
totalLCQtde = k.Sum(x=>x.LCQtde),
totalLDValor = k.Sum(x=>x.LDValor),
totalLDQtde = k.Sum(x=>x.LDQtde)})