Member 12815488 Ответов: 1

Среднее значение по структуре данных[] на основе условия


у меня есть структура данных, которая берется из CSV-файла

DataStruct[]data = new DataStruct[filearray.length];
List<string> datalist = fileArray[i].Split(',').ToList<string>();
data[i].X = Convert.ToSingle(datalist[0]);
data[i].Y = Convert.ToSingle(datalist[1]);


я бы хотел взять среднее значение, так что если
if(data[i].X > min && data[i].X < max )
average data[i].Y


но я не знаю, как получить доступ к структуре данных/списку. я пробовал некоторые вещи с Linq, но я не понимаю, как указать критерии (поэтому я не буду утруждать себя публикацией моего неправильного кода Linq)

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

Что я уже пробовал:

"нормальная сумма"
sum = sum + data[i].Y

всегда дают сумму = 0

1 Ответов

Рейтинг:
7

Wendelius

Вы не указали структуру данных, но предположим, что она выглядит следующим образом

public class MyClass {
   public int X { get; set; }
   public int Y { get; set; }
}

Теперь нужно заполнить некоторые данные
MyClass[] items = new MyClass[5];

items[0] = new MyClass() { X = 1, Y = 5 };
items[1] = new MyClass() { X = 9, Y = 9 };
items[2] = new MyClass() { X = 3, Y = 2 };
items[3] = new MyClass() { X = 6, Y = 0 };
items[4] = new MyClass() { X = 2, Y = 7 };

А чтобы вычислить среднее значение для значений Y, где X больше 2 и меньше 9, вы можете использовать следующий оператор LINQ
double average = items.Where(i => i.X > 2 && i.X < 9).Average(i => i.Y);

Это позволило бы выбрать элементы twi (X=3 и X=6) и вычислить среднее значение для Y из значений 2 и 0.


Member 12815488

Спасибо! это прекрасно работало и очень помогло мне понять Linq в контексте моей программы. теперь я могу упростить много кода!

Wendelius

Всегда пожалуйста :)