欢迎光临

木子屋

标题: C#匿名对象转为集合

作者: dnawo

日期: 2013-05-22 06:35 PM

分类: Win编程

内容: 今天做一个接口时，要求返回数据类型为json对象数组，但服务器端处理后得到的是一个匿名对象，例如：
复制内容到剪贴板 程序代码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)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.195 ms

返回

标题: C#匿名对象转为集合

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.195 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.242 ms

返回