как можно динамически считывать значение из массива объектов и считать его? - PullRequest
0 голосов
/ 06 апреля 2020

enter image description here

провайдер - мой врач, и у каждого врача есть тест пациента, теперь я хочу подсчитать уникальное имя теста и его чтение для самого типа теста. Название теста повторяется, но я хочу, чтобы он был уникальным, и его количество считываний

        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++;
            }

        }

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Из того, что я вижу в вашем коде, это может быть ответ

var systolicCount = array.Count(item => item.AttributeName == "Systolic");
var diastolicCount = array.Count(item => item.AttributeName == "Diastolic");

Это лямбда-методы LINQ, которые будут подсчитывать количество элементов, имеющих определенный атрибут

0 голосов
/ 06 апреля 2020

Чтобы однозначно подсчитать что-то и сохранить исходные данные, вы можете использовать Dictionary<string, List<int>>

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);
}

Теперь у вас есть словарь с одной записью для каждого имени атрибута теста. Каждое значение словарной записи представляет собой список значений, которые являются показаниями. Таким образом, d.Count - это число уникальных тестов

Если вы хотите получить больше информации из теста, может быть лучше сохранить весь тестовый объект в значении словаря, а не только чтение

Вы также можете использовать LINQ для создания такого словаря:

var d = tests.GroupBy(k => k.AttributeName, v => v.Reading).ToDictionary(g =>g.Key, g=>g.ToList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...