c# - 如何将C#中匿名类型的IEnumerable序列化为JavaScript对象?

标签 c# javascript asp.net serialization

在我的 ASP.net C# 代码中,我有一个 IEnumerable 容器,其中填充了匿名类型的对象(它松散地基于来自 SQL 的数据)。

假设我的代码看起来像这样:

var uics = entities.getData()
    .Select(x => new
        {
            id = x.id
            name = x.name
            age = x.age
        });
return Json(uics); //Serialize JSON in ASP.net MVC 3

这很简单。当我将它序列化为 JavaScript 时,我得到一个对象数组,每个对象都有字段 id、name 和 age。

我想做的是将此数据序列化为一个以 id 作为索引的 JavaScript 对象,每个对象由其索引引用并具有字段名称和年龄。

我怎样才能做到这一点。

最佳答案

您可以创建一个 IDictionary 并将其用作操作的结果:

var uics = entities.getData()
    .ToDictionary(x => x.id, x => new { x.name, x.age });

return Json(uics); //Serialize JSON in ASP.net MVC 3

无需为此处使用的匿名类型显式指定属性名称,因为编译器将这些名称默认为用于提供值的属性名称(在这两种情况下都是相同的)。

关于c# - 如何将C#中匿名类型的IEnumerable序列化为JavaScript对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10045855/

相关文章:

asp.net - 从 ASP.NET Core Web API 将多 GB 文件流式传输到 AWS S3

c# - 使用静态获取仅属性线程安全吗?

javascript - promise 链中的 async.queue ?

c# - 比较手写 ADO/Sprocs 与 nHibernate

javascript - 从 Json 文件加载 Enum 值数组

javascript - 寻找无限滚动来向上/向下平移页面内容并在两个方向上逐步加载

c# - 在 C# 中用 Regex 替换两个或多个空格

c# - 是否可以在 Azure Functions .Net 5 中使用多个输出?

c# - 我可以声明一个全局变量并从任何地方引用它而不引用它的类吗?

c# - 如何将数据传递给 MonoTouch.Dialog 的委托(delegate)?