我对linq to entity / Json / MVC.net 4有最奇怪的行为
我有这段代码,出于某种奇怪的原因,每个其他列表的属性顺序是颠倒的。
var output = db.FooBar.Where(a => a.lookupFoo == bar)
.Select(a => new List<double>{
//value's are the same per row
//for demonstration sake.
a.fooBarA, //Always 12.34
a.fooBarB, //Always 12.34
a.fooBarC, //Always 0
a.fooBarD //Always 0 //lazy casting to double from int
});
return Json(new {output});
输出如下所示:
{
"output": [
[12.34, 12.34, 0, 0],
[0, 0, 12.34, 12.34],
[12.34, 12.34, 0, 0],
[0, 0, 12.34, 12.34]
]
};
我已经设法解决了这个问题,在Where和Select之间放置了一个toList()
,但我仍然想知道为什么会发生这种行为。
更多信息:EF4.4 (tt生成的上下文),SQL Server2008r2Express .NET 4.0,MVC3.0,Vanilla System.Web.Mvc.JsonResult,表由一个整型主键组成,浮点型的值不包括最后一个整型
发布于 2013-06-03 23:53:44
试一试
var output = db.FooBar.Where(a => a.lookupFoo == bar)
.Select(a => new List<double>{
//value's are the same per row
//for demonstration sake.
a.fooBarA, //Always 12.34
a.fooBarB, //Always 12.34
a.fooBarC, //Always 0
a.fooBarD //Always 0 //lazy casting to double from int
}).toList();
return Json(output);
在你的输出方式中,只需要上下文,为获取数据生成的脚本可能会在很多时候执行大小为Json()
发布于 2013-05-27 07:17:09
添加一个.ToArray,看看会得到什么。请记住,linq (选择..exc)仅在调用IEnumerator时执行。
我认为如果你添加ToArray,每次的结果都是一样的,而且是一致的。
希望这能有所帮助。
https://stackoverflow.com/questions/15076402
复制相似问题