ASP.NET LINQ 查询用于过滤和循环多个表

2023-12-23

我有两个单独的域模型类“App”和“AgeGroup”。 App 类包含一些基本的整数和字符串属性,AgeGroup 类也是如此。

我想要实现的是 AppOrder 及其属性的所有应用程序的 JSON 输出,嵌套在按其 GroupOrder 属性排序的关联 AgeGroup 中

必需的 JSON 输出结构示例

"Looped List of Age Groups, order by GroupOrder"
      "Looped List of Apps, order by App Order"

 First Age Group
    Foo App Name
        Foo App Icon
        Foo App Store URL
    Bar App Name
        Bar App Icon
        Bar App Store URL
 Second Age Group
    Tur App Name
        Tur App Icon
        Tur App Store URL
    Puk App Name
        Puk App Icon
        Puk App Store URL
  and so on...

到目前为止我的方法:

这是我的"App.cs" Class

public int Id { get; set; }
public string Name { get; set; }
public string StoreURL { get; set; }
public int AppOrder { get; set; }
public string AppIcon { get; set; }

public AgeGroup AgeGroup { get; set; }    // Linked to AgeGroup Class
public int AgeGroupId { get; set; }

In the “年龄组.cs”班级,我有以下

public int Id { get; set; }
public int GroupOrder { get; set; }
public string Name { get; set; }

并在AppsController.cs

    [HttpGet]
    [Route("api/groups")]

    public IHttpActionResult AppsByGroup ()
    {
        var apps = _context.Apps
            .OrderBy(a => a.AppOrder)
            .Select(a => new
            {
                a.Name,
                a.StoreURL,
                a.AppIcon,
                AgeGroup = a.AgeGroup.Name
            }).GroupBy(a => a.AgeGroup);

       return Json(apps);
    }

它给了我正确的输出,但没有年龄组名称。

[
  [ // Here I wanted the AgeGroup Name from the AgeGroup Table (Group A)
    {
        "Name": "First App for Group A",
        "StoreURL": "some string",
        "AppIcon": "icon string",
        "AgeGroup": "Group A"
    },
    {
        "Name": "2nd App Group A",
        "StoreURL": "aslfdj",
        "AppIcon": "asljf",
        "AgeGroup": "Group A"
    },
    {
        "Name": "3rd App Group A",
        "StoreURL": "aslfdj",
        "AppIcon": "alsfdj",
        "AgeGroup": "Group A"
    }
  ],
  [ // Here I wanted the AgeGroup Name from the AgeGroup Table (Group B)
    {
        "Name": "1st App GroupB",
        "StoreURL": "alsfdj",
        "AppIcon": "alsdjf",
        "AgeGroup": "Group B"
    },

//and so on...

Try this

public IHttpActionResult AppsByGroup() {

   var apps = _context.Apps.OrderBy(a => a.AppOrder);
   var groups = _context.AgeGroups.OrderBy(g => g.GroupOrder);

   var result = groups.Select(x => new {
         AgeGroupName = x.Name,
         Apps = apps
           .Where(y => x.Id == y.AgeGroupId)
           .Select(y => new {
              AppName = y.Name,
              AppIcon = y.AppIcon,
              StoreURL = y.StoreURL
            })
         });

   return Json(result);
}

它给出以下输出

[
{
    "AgeGroupName": "Group C",
    "Apps": [
        {
            "AppName": "C Group App",
            "AppIcon": "Some string",
            "StoreURL": "64"
        }
    ]
},
{
    "AgeGroupName": "Group A",
    "Apps": [
        {
            "AppName": "App 2nd for Group AA",
            "AppIcon": "Some string",
            "StoreURL": "654"
        },
        {
            "AppName": "App 1 for Group A",
            "AppIcon": "Some string",
            "StoreURL": "654"
        }
    ]
},
{
    "AgeGroupName": "Group B",
    "Apps": [
        {
            "AppName": "App 1 for Group B",
            "AppIcon": "Some string",
            "StoreURL": "31"
        }
    ]
}
]

希望对你有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET LINQ 查询用于过滤和循环多个表 的相关文章

随机推荐

  • T-SQL 查询,其中列仅包含数字[重复]

    这个问题在这里已经有答案了 可能的重复 如何仅获取数字列值 https stackoverflow com questions 1858867 how to get only numeric column values 我正在尝试编写一个
  • 如何从本机应用程序获取窗口打开/关闭/最小化消息?

    为这个标题写一个好的标题是很困难的 我正在开发一个 WPF 应用程序 它需要了解系统上所有其他打开的窗口的存在 我可以通过调用本机 EnumWindows 方法来完成此操作 并且我可以调用其他本机方法来过滤出我感兴趣的窗口 这效果很好 我遇
  • 如何捕获 NoSuchElementException?

    我的课堂作业是编写一个程序 让用户输入一组数值 如果用户输入的值不是数字 则程序应该给用户 2 次机会正确输入数字 在这两次机会之后 停止要求输入并打印迄今为止正确输入的所有值的总和 事实上 我的代码不能正常工作 当输入第一个非数字时 程序
  • 运算符<<重载隐藏其他

    我有一个奇怪的运算符 include
  • 分步更改 iPad Pro 的字体大小

    我有一个应用程序 仅适用于横向模式下的 iPad 屏幕设计完全在 IB 中通过自动布局完成 现在我想实现以下行为 在 iPad Pro 12 英寸上时 所有标签的字体大小应为 48 对于所有较小的 iPad 尺寸 字体大小应为 32 我在
  • 无法将foreign_key_checks设置为0/关闭

    我有一个小数据库 我刚刚添加了一些表并设置了外键约束 现在我想上传一些数据并阅读了有关使用以下内容暂时关闭检查的信息 SET FOREIGN KEY CHECKS 0 我正在从 SQL 窗口运行此查询 我收到一条 成功 消息 但是当我检查设
  • Flex 3中如何防止组件被拖出舞台

    我认为这个问题有一个简单的解决方案 只是不够简单让我找到它 问题 如何限制 Flex 3 中的 TitleWindow 被拖离屏幕 舞台 有没有办法将TitleWindow限制在查看区域 示例 假设我有一个占据 100 屏幕的应用程序 接下
  • 在 Python 中加载与 Jinja2 嵌套的 YAML

    我有一个 YAML 文件 all yaml 看起来像 var1 val1 var2 val2 var3 var1 var2 txt 如果我像这样在 Python 中加载它 import yaml f open all yaml dataMa
  • 获取导致异常的异常描述和堆栈跟踪,全部作为字符串

    如何转换捕获的Exception 其描述和堆栈跟踪 到str外用 try method that can raise an exception params except Exception as e print complete exce
  • OL3:缩放到地图上的矢量图层

    我有一张带有 openlayers 3 和矢量图层的地图 我想将地图调整为该矢量图层的大小 但到目前为止 我所能得到的只是将地图集中在该矢量的最后一个点上 因为在创建地图时无法访问矢量图层的点 if trackMap null for va
  • GWT RPC - 每个应用程序多个 RPC 服务

    我目前正在使用一个具有大型 RPC 服务的 GWT 应用程序 它有 100 多个方法 所有方法都做不同的事情 如果我将其拆分为多个 RPC 服务 我会获得什么样的性能优势 障碍 我相信我必须为每一个创建一个新的 servlet 所以我的主要
  • iframe onmouseout 捕获

    目前 我的父页面中有一个 iframe 我想知道当用户单击或移动到 iframe 边框之外 即返回父页面 时 是否可以捕获 onmouseout 事件来捕获 您应该能够在 iframe 页面中执行 document body onmouse
  • 圆角桌 LESS

    经过一番挖掘后我发现this https stackoverflow com questions 628301 css3s border radius property and border collapsecollapse dont mi
  • 当我们不需要主外键关系就可以加入时,为什么还需要主外键关系?

    当我们不需要主外键关系就可以加入时 为什么还需要主外键关系 test1 id lname fname dob no primary and foreign key and not unique no constraints test2 id
  • JEP 145 发生了什么(由于编译代码重用,jvm 启动速度更快)?

    在2012年 捷普 145 http hg openjdk java net jep jeps rev a16daa94ba0f创建的目的是 缓存编译后的本机代码在java中用于更快的 jvm 启动 当时 它已被正式宣布 https twi
  • Tensorflow,在 RNN 中保存状态的最佳方式?

    我目前有以下代码 用于张量流中一系列链接在一 起的 RNN 我没有使用 MultiRNN 因为我稍后要对每一层的输出做一些事情 for r in range RNNS with tf variable scope recurent d r
  • 适用于 iOS15 和 iOS16 的 NavigationLink

    我正在开发一个以 iOS 15 作为最低目标的应用程序 这意味着它还需要支持较新版本的 iOS 对于屏幕导航 我使用 NavigationView NavigationLink destination isActive label 我正是需
  • 无法在 Visual Studio 2013 中同步 Git

    我正在与另一位开发人员合作 我们似乎陷入了 GIT 困境 我定期提交代码并定期推送到远程主机 我的同事 虽然是一个很棒的人和开发人员 还没有养成这样做的习惯 当我今天早上去 Pull the Head 修订时 这是我的习惯 我遇到了以下错误
  • Asp.net MVC 核心中 Ajax.BeginForms 的替代方案是什么

    我认为在 asp net MVC 核心中 我们不再可以选择使用 Ajax BeginForms 那么 Ajax BeginForm 的替代方案是什么 您可以使用内联data ajax 属性
  • ASP.NET LINQ 查询用于过滤和循环多个表

    我有两个单独的域模型类 App 和 AgeGroup App 类包含一些基本的整数和字符串属性 AgeGroup 类也是如此 我想要实现的是 AppOrder 及其属性的所有应用程序的 JSON 输出 嵌套在按其 GroupOrder 属性