Создание новой коллекции из объектов, убрав повторы и изменив некоторые элементы - C#
Формулировка задачи:
Всем доброго вечера
Собственно, создается и инициализируется класс Table, с полями time и val.
Cоздается коллекция из объектов этого класса она заполняется данными путем определенных вычислений, в итое получается множество экземпляров класса где конкретному значению tb1[i].time соответсвует определенное значение tb1[i].val, причем данные в обих полях могут повторяются.
Делается сортировка относительно поля znach
Необходимо создать новую коллекцию из объектов класса Table, например , в которой будут отсутствовать повторы в поле val, а если этому значению val в оригинальной коллекции соответствовало несколько значений time, то в новой коллекции ему соответствовало бы среднее арифметическое time.
Пример:
Дано:
t v
1 3
2 1
3 3
4 2
2 3
1 3
3 4
Что должно получиться:
t v
2 1
4 2
3,5 3
3 4
прошу помочь с примерным кодом
List<Table> tb1 = new List<Table>();
List<Table> tb2 = new List<Table>();
Решение задачи: «Создание новой коллекции из объектов, убрав повторы и изменив некоторые элементы»
textual
Листинг программы
namespace Test
{
class Table
{
public double T{get; private set;}
public double V{get; private set;}
public Table(double t, double v)
{
T = t;
V = v;
}
}
class Program
{
public static void Main (string[] args)
{
List<Table> lst = new List<Table>
{
new Table(1, 3),
new Table(2, 1),
new Table(3, 3),
new Table(4, 2),
new Table(2, 3),
new Table(1, 3),
new Table(3, 4)
};
List<Table> result =
(from x in lst group x by x.V into key_value
select new Table(key_value.Average((x) => x.T), key_value.Key)).ToList();
foreach (Table t in result)
{
Console.WriteLine ("{0} - {1}", t.T, t.V);
}
}
}
}