 <p>I couldn't get anything to pass all my tests for CSV Parsing, so I ended up writing something simple to do it. <a href="https://gist.github.com/1258207" rel="nofollow">AnotherCsvParser</a></p> <p>It does everything I need... but should be easy to fork and extend to your needs too.</p> <p>Given:</p> <pre><code> public class ABCD { public string A; public string B; public string C; public string D; } </code></pre> <p>It assumes the columns are in the order the fields are defined..(but would be easy to extend to read an attribute or something)</p> <p>This works:</p> <pre><code> var output = NigelThorne.CSVParser.ReadCSVAs&lt;ABCD&gt;( "a,\"b\",c,d\n1,2,3,4\n\"something, with a comma\",\"something \\\"in\\\" quotes\",\" a \\\\ slash \",\n,,\"\n\","); </code></pre> <p>Such that: </p> <pre><code> Assert.AreEqual(4, output.ToArray().Length); var row1 = output.ToArray()[0]; Assert.AreEqual("a", row1.A); Assert.AreEqual("b", row1.B); Assert.AreEqual("c", row1.C); Assert.AreEqual("d", row1.D); </code></pre> <p>Note: It's probably not very fast with lots of data either.. again not a problem for me. </p>