public void Log(JointPositions positions, uint userId, IList <IGesture> gestures) { positions.InitIfNotSetExt(Fnc.Values <Joints>()); var timestamp = DateTime.Now.ToString("O"); var player = userId.ToString(CultureInfo.InvariantCulture); var positionsDump = string.Join(",", Fnc.Values <Joints>().Select(joint => positions[joint].x + "," + positions[joint].y + "," + positions[joint].z).ToArray()); var baseDataLine = timestamp + "," + player + "," + positionsDump + ","; if (gestures == null || gestures.Count < 1) { gestures = new IGesture[] { null } } ; foreach (var dataLine in gestures.Select(gestureDetected => baseDataLine + (gestureDetected != null ? gestureDetected.Gesture.ToString() : "None"))) { _dataStream.WriteLine(dataLine); } }