[英]Why is Linq to Entity Select Method flip flopping projected lists properties?
我对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()
来解决它,但我仍然想知道为什么会发生这种行为。
更多信息:EF 4.4(tt生成的上下文),SQL Server 2008r2表达.NET 4.0,MVC 3.0,Vanilla System.Web.Mvc.JsonResult,表由一个int主键组成,浮点数除去最后一个是int的值
尝试
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);
在你的方式输出只是上下文生成的获取数据的脚本可能是它在大小JACT()多次执行
添加.ToArray,看看你得到了什么。 请记住,linq(Select .. exc)仅在调用IEnumerator时执行。
我想如果你添加ToArray,结果每次都是相同的,并且是一致的。
希望有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.