LINQ - 选择特定列

时间:2016-07-13 18:13:37

标签: c# linq razor

我有一个使用Razor的ASP.NET MVC应用程序。在我的Razor视图中,我使用的是预先编写的JavaScript库。该库期望一些JSON的形式如下:

var options = [
  { id=1, name='Joe', index=3 },
  { id=216, name='Bill', index=1 },
  { id=923, name='Katy', index=2 }
];

我正在尝试从List<MyEntity>在我的Razor视图中填充/生成此数组。为了做到这一点,我有以下内容:

var options= JSON.parse('@Html.Raw(Json.Encode(@Model.Options.Select(c => new { id=c.Id, name=c.FullName, index=c.Position } )))');

当它运行时,我得到一个对象数组。但是,每个对象都将每个属性都生成为字段。有没有办法让我选择特定的字段,以便我可以减少生成的大小。这些对象具有数百个属性。因此,从带宽的角度来看,通过网络发送它们会变得非常昂贵。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

我会尝试通过执行以下操作来使其过于复杂:

<script>
    var options = [];

    @{
        foreach(var option in @Model.Options)
        {      
            <text>
                var obj = {
                            id:'@(option.Id)', 
                            name: '@(option.Name)', 
                            index: '@(option.Position)'
                          };

                options.push(obj);
            </text> 
        }
    }    

    ... 
</script>

答案 1 :(得分:0)

我过去曾使用过这段代码而且它的工作原理。它需要Json.NET库:http://www.newtonsoft.com/json

var options = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Options.Select(c => new { id=c.Id, name=c.FullName, index=c.Position } )));