我正在尝试从数据库中获取数据为我的程序中的谷歌图表服务。我想创建一个匿名类型数组(var),而不是一遍又一遍地重复我的代码:
public JsonResult GetChartData(int sID, int regionID)
{
var testPathOne = from p in _rep.GetMetricsData().GetLHDb().page_loads
where p.t_3id == sID && p.test_path_id == 1
select new { time = p.time, created_at = p.created_at };
var testPathTwo = from p in _rep.GetMetricsData().GetLHDb().page_loads
where p.t_3id == sID && p.test_path_id == 2
select new { time = p.time, created_at = p.created_at };
var tOne = testPathOne.ToArray();
var tTwo = testPathTwo.ToArray();
var name = new { test1 = tOne, test2 = tTwo };
return Json(name);
}
我知道我需要一个for循环,这样我就可以遍历所有的测试路径ID,而不是像这样硬编码它们: p.test_path_id == 1
,但我的问题是如何使这部分动态化:var name = new { test1 = tOne, test2 = tTwo };
编辑:我很抱歉,我想做这样的事情:
name is an array
for loop:
testPath = query
name.Add(testPath)
我希望你能理解。
我希望这样说得通
ExpandoObject
,但我认为直接构建JSON可能更好... - Jon Skeetvar
只能在编译器可以完全确定var
所代表的类型的情况下使用。如果类型直到运行时才能确定,您可能需要考虑使用dynamic
,但我不确定它如何适用于这种特定情况。 - sblom{"test1"={}, "test2"={},...., "test1234"={}}
吗? - Alexei Levenkov