gpt4 book ai didi

c# - 在 C# 中按两个属性对 JSON 数据进行分组

转载 作者:太空宇宙 更新时间:2023-11-03 22:38:18 24 4
gpt4 key购买 nike

我正在尝试显示和分组 json 数据,并按一个唯一 ID 对整个数组的组件和结果进行分组,然后按日期(对于数组中的所有组件和结果)进行分组。

我已经从 json 文件中获取了数据,现在我只能对数据进行分组。

感谢任何帮助,谢谢!

患者.cs:

namespace ConsoleApp
{
class Patient
{

public int ID{ get; set; }
public string component { get; set; }
public string result { get; set; }
public string date { get; set; }
}

class Patients
{
public List<Patient> patients;
}
}

更新:

TABLE

最佳答案

您必须使用 IDDate 对您的患者数据进行分组,以便您可以使用 linq 执行此操作。

...
JsonResponse = objReader.ReadLine();
Patients patients = JsonConvert.DeserializeObject<Patients>(JsonResponse);

var result = (from p in patients.patients
group p by new { p.ID, p.date } into grp
select new
{
Key = grp.Key,
Items = grp.ToList()
}).ToList();

foreach (var item in result)
{
Console.WriteLine(item.Key.ID);
Console.WriteLine(item.Key.date);
Console.WriteLine();

item.Items.ForEach(x => Console.WriteLine($"ID: {x.ID}, date: {x.date}, result: {x.result}, component: {x.component}"));
Console.WriteLine();
}

Console.ReadLine();

输出:

1030
10/19/2018

ID: 1030, date: 10/19/2018, result: 1, component: A
ID: 1030, date: 10/19/2018, result: 2, component: B
ID: 1030, date: 10/19/2018, result: 3, component: C
ID: 1030, date: 10/19/2018, result: 4, component: D
ID: 1030, date: 10/19/2018, result: 5, component: E

1031
12/12/2019

ID: 1031, date: 12/12/2019, result: 6, component: A
ID: 1031, date: 12/12/2019, result: 7, component: B
ID: 1031, date: 12/12/2019, result: 8, component: C
ID: 1031, date: 12/12/2019, result: 9, component: D
ID: 1031, date: 12/12/2019, result: 10, component: E

编辑:

对于您在屏幕截图中显示的自定义输出。

...
var result = (from p in patients.patients
group p by new { p.ID, p.date } into grp
select new
{
Key = grp.Key,
Items = grp.ToList()
}).ToList();

DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("DATUM");

foreach (var item in result.Select(x => x.Items).FirstOrDefault())
{
dt.Columns.Add(item.component);
}

foreach (var item in result)
{
DataRow dr = dt.NewRow();
dr["ID"] = item.Key.ID;
dr["DATUM"] = item.Key.date;

foreach (var innerItem in item.Items)
{
dr[innerItem.component] = innerItem.result;
}

dt.Rows.Add(dr);
}

foreach (DataRow row in dt.Rows)
{
Console.WriteLine($"ID: {row["ID"]}, DATUM: {row["DATUM"]}, A: {row["A"]}, B: {row["B"]}, C: {row["C"]}, D: {row["D"]}, E: {row["E"]}");
}

输出:

ID: 1030, DATUM: 10/19/2018, A: 1, B: 2, C: 3, D: 4, E: 5
ID: 1030980, DATUM: 12/12/2019, A: 6, B: 7, C: 8, D: 9, E: 10

关于c# - 在 C# 中按两个属性对 JSON 数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53743293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com