C# 如何从对象数组中动态读取值并对其进行计数?

C# 如何从对象数组中动态读取值并对其进行计数?,c#,arrays,C#,Arrays,提供者是我的医生,每个医生都有病人测试,现在我想计算唯一的测试名称和每个测试类型的读数。测试名称正在重复,但我想更改其唯一性及其读取计数 var criticalReading = new ProviderBL().GetCriticalReadingByProvider(userid); CriticalReadingListViewModel obj = new CriticalReadingListViewModel(); int D = 0

提供者是我的医生,每个医生都有病人测试,现在我想计算唯一的测试名称和每个测试类型的读数。测试名称正在重复,但我想更改其唯一性及其读取计数

        var criticalReading = new ProviderBL().GetCriticalReadingByProvider(userid);
        CriticalReadingListViewModel obj = new CriticalReadingListViewModel();
        int D = 0;
        int S = 0;
        int u = 0;
        foreach (var item in criticalReading)
        {

            if (item.AttributeName == "Systolic")
            {
                obj.Dcounter = S;
                S++;
            }
            else if (item.AttributeName == "Diastolic")
            {
                obj.Scounter = D;
                D++;
            }
            else
            {
                u++;
            }

        }

从我在代码中看到的情况来看,这可能就是答案

var systolicCount=array.Countitem=>item.AttributeName==Systolic; var diastolicCount=array.Countitem=>item.AttributeName==Diastolic;
这些是LINQ lambda方法,它将计算具有特定属性的项数,从我在代码中看到的情况来看,这可能就是答案

var systolicCount=array.Countitem=>item.AttributeName==Systolic; var diastolicCount=array.Countitem=>item.AttributeName==Diastolic;
这些是LINQ lambda方法,它将计算具有特定属性的项的数量

要唯一地计算某些项并保留原始数据,您可以使用字典


要唯一地计算某些数据并保留原始数据,可以使用字典



S++和D++应该位于obj.Dcounter=S之前;和obj.sconter=D;分别地保存u++的是一个obj.Ucounter=u;问题不明确,也没有给出错误!!提示:这个问题与asp.net无关,这只是c语言,所以不必提及。另外,当你描述这个问题时,没有人会谈论医生、汽车等,比如对象数组、项目、依赖关系。我们不需要您的业务规则显示无法读取计数并更新到以前的对象并设置到viewbag中,然后在视图上显示?viewbag.CriticalReaders=criticalReading;您可以详细说明动态的含义。这似乎是一个XY问题。你的计数应该没问题,但有些事情困扰着你。是否要在计数时动态更新计数?S++和D++应该位于obj.Dcounter=S之前;和obj.sconter=D;分别地保存u++的是一个obj.Ucounter=u;问题不明确,也没有给出错误!!提示:这个问题与asp.net无关,这只是c语言,所以不必提及。另外,当你描述这个问题时,没有人会谈论医生、汽车等,比如对象数组、项目、依赖关系。我们不需要您的业务规则显示无法读取计数并更新到以前的对象并设置到viewbag中,然后在视图上显示?viewbag.CriticalReaders=criticalReading;您可以详细说明动态的含义。这似乎是一个XY问题。你的计数应该没问题,但有些事情困扰着你。您想在计数时动态更新您的计数吗?谢谢您提供的信息,我需要这些测试名称动态计数,就像按testID分组查询和所有剩余的测试名称一样names@UmarFaraz正如我所指出的,这是我能从我们的代码中得到的全部。如果你能改进你的问题,我们就能改进答案。完全不清楚,动态对你意味着什么?您的问题有编辑按钮-使用它。当然,实际上我想读取测试名称并动态计算其值,如groupby attributename和reading,然后计算其值每个测试有多少读取值。group by将在属性名和读取上实现,其他表名也将显示在select中。感谢您提供的信息,我需要这些测试名动态计数,就像group by query by testID和所有剩余的表名一样names@UmarFaraz正如我所指出的,这是我能从我们的代码中得到的全部。如果你能改进你的问题,我们就能改进答案。完全不清楚,动态对你意味着什么?您的问题有编辑按钮-使用它。当然,实际上我想读取测试名称并动态计算其值,如groupby attributename和reading,然后计算其值每个测试有多少读取值。group by将在属性名和读取上实现,其他表名也将显示在select中。注释不用于扩展讨论;此对话已结束。评论不用于扩展讨论;这段对话已经结束。
var d = new Dictionary<string, List<int>>();
foreach(Test t in tests)
{
  if(!d.ContainsKey(t.AttributeName))
    d[t.AttributeName] = new List<int>();

  d[t.AttributeName].Add(t.Reading);
}
var d = tests.GroupBy(k => k.AttributeName, v => v.Reading).ToDictionary(g =>g.Key, g=>g.ToList());