在我们 API 响应中合并两个结果集

Combine two result sets in we API response

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

我有一个结果集 returns 以下字段-

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

我还有一个结果集,其中 returns 学生类别信息-

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

简而言之,类别结果集returns student Id 以及其下的。所以这里两个学生都属于类别1000.

我想将第一个结果与第二个结果合并,这样它将 return 类别与学生信息一起-

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

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

根据你的代码和描述,结果集好像是一个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();

截图是这样的,然后,你可以return把结果给客户端。

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