private void WriteMeterValues(SpatialRecord spatialRecord, List<WorkingData> meters, MemoryStream memoryStream, Dictionary<WorkingData, int> metersByIsoIds)
{
var dlvOrders = metersByIsoIds.Values.Distinct();
Dictionary<int, uint> dlvsToWrite;
if (dlvOrders.Contains(-1))
dlvsToWrite = GetMeterValuesAndAssignDlvNumbers(spatialRecord, meters);
else
dlvsToWrite = GetMeterValues(spatialRecord, meters, metersByIsoIds);
var numberOfMeters = (byte)dlvsToWrite.Count;
var numberOfMetersStream = new MemoryStream();
numberOfMetersStream.WriteByte(numberOfMeters);
numberOfMetersStream.WriteTo(memoryStream);
foreach (var key in dlvsToWrite.Keys)
{
var order = (byte) key;
var value = dlvsToWrite[key];
memoryStream.WriteByte(order);
var valueStream = new MemoryStream(BitConverter.GetBytes(value));
valueStream.WriteTo(memoryStream);
}
}