У меня есть список необработанных данных, где всегда доступно 8 значений данных для одной отметки времени Date_Time.Я хотел бы использовать linq для сортировки значений столбца Data_Value по Data_Type в одну строку для каждого Date_Time.
Таблица необработанных данных
У меня есть следующий класс, и я быхотел бы вернуть его как список этого класса.
public class MeasurementData
{
public MeasurementData();
public int Test_ID { get; set; }
public int Channel { get; set; }
public string Date_Time { get; set; }
public double Current { get; set; }
public double Voltage { get; set; }
public double Charge_Capacity { get; set; }
public double Discharge_Capacity { get; set; }
}
Вот сокращенная форма кода, где я просто пытаюсь извлечь четыре значения.
public static List<DataStructure.MeasurementData> RawResult(List<DataStructure.MeasurementRawTableSQL> rawData, int _Test_ID)
{
if (rawData != null)
{
var result = rawData.GroupBy(x => x.Date_Time)
.Select(gr =>
{
var _Date_Time = TicksToDate(gr.FirstOrDefault().Date_Time);
var _Channel = gr.FirstOrDefault().Channel;
var _Voltage = gr.Where(x => x.Data_Type == 21).FirstOrDefault().Data_Value;
var _Current = gr.Where(x => x.Data_Type == 22).FirstOrDefault().Data_Value;
var _Charge_Capacity = gr.Where(x => x.Data_Type == 23).FirstOrDefault().Data_Value;
var _Discharge_Capacity = gr.Where(x => x.Data_Type == 24).FirstOrDefault().Data_Value;
return new DataStructure.MeasurementData
{
Test_ID = _Test_ID,
Channel = _Channel,
Date_Time = _Date_Time,
Current = _Current,
Voltage = _Voltage,
Charge_Capacity = _Charge_Capacity,
Discharge_Capacity = _Discharge_Capacity
};
}
).ToList();
return result;
}
else return null;
}
Это частичноработает, для случаев 21 и 22 это дает мне правильные значения, в то время как я получаю ошибку «Ссылка на объект не установлена на экземпляр объекта» для случаев 23 и 24. С другой стороны, база данных имеет эти строки для каждогоdatapoint и никогда не является нулевымЕсли я выберу только First () вместо FirstOrDefault (), я получу «последовательность не содержит элементов».
Я действительно застрял прямо сейчас и очень ценю вашу помощь.