public bool Equals(EITEntry other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } var equal = Configuration == other.Configuration && StartDateTime.EqualsUpToMilliseconds(other.StartDateTime) && EndDateTime.EqualsUpToMilliseconds(other.EndDateTime) && VoltagesReal.Rank == other.VoltagesReal.Rank && Enumerable.Range(0, VoltagesReal.Rank).All(dimension => VoltagesReal.GetLength(dimension) == other.VoltagesReal.GetLength(dimension)) && VoltagesReal.Cast <float>().SequenceEqual(other.VoltagesReal.Cast <float>()) && VoltagesIm.Rank == other.VoltagesIm.Rank && Enumerable.Range(0, VoltagesIm.Rank).All(dimension => VoltagesIm.GetLength(dimension) == other.VoltagesIm.GetLength(dimension)) && VoltagesIm.Cast <float>().SequenceEqual(other.VoltagesIm.Cast <float>()) && CurrentsReal.Rank == other.CurrentsReal.Rank && Enumerable.Range(0, VoltagesIm.Rank).All(dimension => CurrentsReal.GetLength(dimension) == other.CurrentsReal.GetLength(dimension)) && CurrentsReal.Cast <float>().SequenceEqual(other.CurrentsReal.Cast <float>()) && CurrentsIm.Rank == other.CurrentsIm.Rank && Enumerable.Range(0, CurrentsIm.Rank).All(dimension => CurrentsIm.GetLength(dimension) == other.CurrentsIm.GetLength(dimension)) && CurrentsIm.Cast <float>().SequenceEqual(other.CurrentsIm.Cast <float>()) && Saturation.Rank == other.Saturation.Rank && Enumerable.Range(0, Saturation.Rank).All(dimension => Saturation.GetLength(dimension) == other.Saturation.GetLength(dimension)) && Saturation.Cast <ulong>().SequenceEqual(other.Saturation.Cast <ulong>()) && Timestamps.Rank == other.Timestamps.Rank && Enumerable.Range(0, Timestamps.Rank).All(dimension => Timestamps.GetLength(dimension) == other.Timestamps.GetLength(dimension)) && Timestamps.Cast <long>().SequenceEqual(other.Timestamps.Cast <long>()); if (PacketIds != null && other.PacketIds != null) { equal = equal && PacketIds.Rank == other.PacketIds.Rank && Enumerable.Range(0, PacketIds.Rank).All(dimension => PacketIds.GetLength(dimension) == other.PacketIds.GetLength(dimension)) && PacketIds.Cast <ulong>().SequenceEqual(other.PacketIds.Cast <ulong>()); } return(equal); }