c# - 在 linq select 语句中创建 json 样式

标签 c# json linq

在我的 MVC Controller 中,我有以下 linq 查询(工作正常):

var result = from li in lineItems
             join r in rates on li.something = r.something
             select new
             {
                 li.something
                 li.somethingElse
                 li.another
                 r.something
                 r.somethingElse
                 r.rate1
                 r.rate2
                 r.rate3
                 r.rate4
             };

return JSON(result.ToList(), JsonRequestBehavior.AllowGet);

这样就可以很好地生成平面对象。然而,我真正需要的是让比率成为它们自己的对象,更深一层,如下所示:

{
    li.something
    li.somethingElse
    li.another
    r.something
    r.somethingElse
    rates = {
                {id = "1", value = r.rate1}
                {id = "2", value = r.rate2}
                {id = "3", value = r.rate3}
                {id = "4", value = r.rate4}
            }
}

我很难获得正确的 C# 语法来实现这一点。硬编码 id 很好。我将始终只有 1、2、3 和 4 的比率。

最佳答案

您可以将“rates”属性定义为对象的匿名数组,请参阅下面的示例以供引用。

{
    li.something,
    li.somethingElse,
    li.another,
    r.something,
    r.somethingElse,
    rates = new[]{
                new {id = "1", value = r.rate1},
                new {id = "2", value = r.rate2},
                new {id = "3", value = r.rate3},
                new {id = "4", value = r.rate4}
            }
}

关于c# - 在 linq select 语句中创建 json 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46409485/

相关文章:

c# - 如何在我的客户端上捕获 HTTP 传出请求?

c# - 在应用程序配置文件中找不到指定的连接字符串

java - org.json.JSONArray 类型的项目无法转换为 JSONObject

java - 如何使用 GSON 比较两个 JSON 字符串是否相等?

ASP.net 4.0 实体数据模型 Mysql 未正确处理 Mysql 枚举

c# - 生成排列的此 LINQ 代码的说明

c# - 每个请求缓存 Entity Framework DbContexts

C# 与 VB.NET 按位或

Javascript 添加一个带有字符串值名称的属性

c# - 将 LINQ 查询作为字符串发送到 Entity Framework