LINQ - 选择特定列

本文关键字:选择 LINQ | 更新日期: 2023-09-27 17:56:53

我有一个使用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 } )))');

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

我错过了什么?

LINQ - 选择特定列

我会尽量不要通过执行以下操作来使其过于复杂:

<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>

我过去使用过这段代码并且它有效。 它需要 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 } )));