var detail = new { PayOut = 50, InCome = 100 };尝试用dynamic关键字,测试可以实现需求,代码如下:
using (testContext context = new testContext())
{
DateTime date1 = DateTime.Parse("2013-05-20");
DateTime date2 = DateTime.Parse("2013-05-27");
var details = context.AdDetails.Where(d => d.Created >= date1 && d.Created < date2);
var detail = new { PayOut = details.Sum(item => item.PayOut), InCome = details.Sum(item => item.InCome) };
var data = new List<dynamic>() { detail };
Console.WriteLine(new JavascriptSerializer().Serialize(data));
}后来对Linq进行构造,一样可以完成:
using (testContext context = new testContext())
{
DateTime date1 = DateTime.Parse("2013-05-20");
DateTime date2 = DateTime.Parse("2013-05-27");
var data = context.AdDetails.Where(d => d.Created >= date1 && d.Created < date2).ToList()
.Select(d => new { PayOut = d.PayOut, InCome = d.InCome, Group = 1 })
.GroupBy(d => d.Group) //关键点
.Select(g => new { PayOut = g.Sum(item => item.PayOut), InCome = g.Sum(item => item.InCome) });
Console.WriteLine(new JavascriptSerializer().Serialize(data));
}对应SQL语句为:
select SUM(PayOut) PayOut, SUM(InCome) InCome from AdDetail where Created>='2013-05-20' and Created<'2013-05-27'
评论(0)
暂无评论。