ISpan LogImpl(DateTimeOffset?timestamp, IEnumerable <KeyValuePair <string, object> > fields) { ThrowDisposed(); if (fields == null) { return(this); } var map = fields.ToDictionary(c => c.Key, c => c.Value); if (map.TryGetValue("event", out var @event) && @event != null && map.Count == 1) { if (timestamp.HasValue) { zipkinSpan.Annotate(timestamp.Value, @event.ToString()); } else { zipkinSpan.Annotate(@event.ToString()); } return(this); } var aggregage = map.Aggregate((string)null, (current, value) => current == null ? $"{value.Key}={value.Value}" : current + $" {value.Key}={value.Value}" ); if (timestamp.HasValue) { zipkinSpan.Annotate(timestamp.Value, aggregage); } else { zipkinSpan.Annotate(aggregage); } return(this); }