【问题标题】:Combine two result sets in we API response在我们的 API 响应中合并两个结果集
【发布时间】:2021-07-26 14:20:52
【问题描述】:

我正在使用.Net core 3.1 并寻找一种方法来组合两个结果集-

我有一个返回以下字段的结果集-

{
  "studentId": 1001,
  "studentName": "John Smot",
  "studentGrade": 5
},
{
  "studentId": 1002,
  "studentName": "Amy Johnson",
  "studentGrade": 4
}

我还有一个返回学生类别信息的结果集-

{
  "categoryId": 1000,
  "categoryName": "EVS",
  "studentId": 1001
},
{
  "categoryId": 1000,
  "categoryName": "EVS",
  "studentId": 1002
}

简而言之,类别结果集也会返回属于它的学生 ID。所以这里两个学生都属于类别 1000。

我想将第一个结果与第二个结果结合起来,这样它就会返回类别以及学生信息-

 {
      "studentId": 1001,
      "studentName": "John Smot",
      "studentGrade": 5,
      "categoryId": 1000
    },
    {
      "studentId": 1002,
      "studentName": "Amy Johnson",
      "studentGrade": 4,
      "categoryId": 1000
    }

这两个结果都来自不同的来源,我不确定是否有直接的方法可以做到这一点。有人可以建议实现这一目标的最快方法吗?

【问题讨论】:

  • 您自己有没有尝试过? Stack Overflow 不存在为您编写代码。
  • @IanKemp 未尝试但已调查并没有找到确切的解决方案。无论如何,我一直在寻找一种方法来做到这一点..而不是实际的代码。

标签: .net-core asp.net-core-webapi asp.net-core-3.1 webapi


【解决方案1】:

根据你的代码和描述,结果集好像是一个json字符串吧?如果是这样,在得到结果集后,首先可以根据结果创建模型,并使用JsonSerializer.Deserialize()方法将JSON字符串转换为Object,然后可以使用LINQ查询语句得到结果.

参考以下示例:

型号:

public class StudentInfo
{
    public int studentId { get; set; }
    public string stuendtName { get; set; }
    public int studentGrade { get; set; }
}
public class CategoryInfo
{
    public int categoryId { get; set; }
    public string categoryName { get; set; }
    public int studentId { get; set; }
}
public class StudentCategoryViewModel
{
    public int studentId { get; set; }
    public string stuendtName { get; set; }
    public int studentGrade { get; set; }
    public int categoryId { get; set; }
}

还有:

        //required using System.Text.Json;
        var studentjsonstr = "[{\"studentId\":1001,\"stuendtName\":\"John Smot\",\"studentGrade\":5},{\"studentId\":1002,\"stuendtName\":\"Amy Johnson\",\"studentGrade\":4}]";
        var categoryjsonstr = "[{\"categoryId\":1000,\"categoryName\":\"EVS\",\"studentId\":1001},{\"categoryId\":1000,\"categoryName\":\"EVS\",\"studentId\":1002}]";
        var studentlist = JsonSerializer.Deserialize<List<StudentInfo>>(studentjsonstr);
        var categorylist = JsonSerializer.Deserialize<List<CategoryInfo>>(categoryjsonstr);
        
        var result = studentlist.Select(c => new StudentCategoryViewModel()
        {
            studentId = c.studentId,
            stuendtName = c.stuendtName,
            studentGrade = c.studentGrade,
            categoryId = categorylist.Where(d => d.studentId == c.studentId).FirstOrDefault().categoryId
        }).ToList();

这样的截图,然后,你可以将结果返回给客户端。

参考:How to serialize and deserialize JSON in .NET

【讨论】:

    猜你喜欢
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多