繁体   English   中英

为什么Linq to Entity Select Method翻转投影列表属性?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM