Чтобы однозначно подсчитать что-то и сохранить исходные данные, вы можете использовать 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());