Convertir la lista a una lista dinámica

Tengo una lista:

IList<PIData> list = new List<PIData>()

Esto devuelve una lista como esta:

Timestamp        | End              | HeaderTitle | Value
=========================================================
12/12/2012 00:00 | 12/12/2012 00:01 | Test1       | 0.23
12/12/2012 00:00 | 12/12/2012 00:01 | Test2       | 0.34
12/12/2012 00:00 | 12/12/2012 00:01 | Test3       | 0.556

Esto continúa una y otra vez donde a veces tendré 50-100 HeaderTitles diferentes

Necesito poder hacer pivotar esto y finalmente escribirlo en un CSV con Fila como encabezado. Sé cómo convertir un objeto a CSV, pero estoy teniendo muchas dificultades para girar la lista y espero que alguien pueda ayudar.

Esto es lo que quiero que se vea:

Timestamp        | End              | Test1 | Test2 | Test3 | etc
==================================================================
12/12/2012 00:00 | 12/12/2012 00:01 | 0.23  | 0.34  | 0.556
12/12/2012 00:01 | 12/12/2012 00:02 | 0.23  | 0.34  | 0.556
12/12/2012 00:02 | 12/12/2012 00:03 | 0.23  | 0.34  | 0.556

¿Puede alguien ayudarme a hacer este trabajo? Realmente solo necesito poder mover mi Lista a una nueva Lista que finalmente será un archivo CSV ... Sé cómo hacerlo en SQL pero no puedo usar SQL en este escenario.

Respuestas a la pregunta(1)

Su respuesta a la pregunta