linq to csv extension method
Posted by Ronnie Diaz
Can be used to convert list of strongly typed objects to csv output.
public static class extensionmethods { #region LinqToCSV public static string ToCsv<T>(this IEnumerable<T> items) where T : class { var csvBuilder = new StringBuilder(); var properties = typeof(T).GetProperties(); string header = string.Join(",", properties.Select(p => p.Name.ToCsvValue()).ToArray()); csvBuilder.AppendLine(header); foreach (T item in items) { string line = string.Join(",", properties.Select(p => p.GetValue(item, null).ToCsvValue()).ToArray()); csvBuilder.AppendLine(line); } return csvBuilder.ToString(); } private static string ToCsvValue<T>(this T item) { if (item == null) return "\"\""; if (item is string) { return string.Format("\"{0}\"", item.ToString().Replace("\"", "\\\"")); } double dummy; if (double.TryParse(item.ToString(), out dummy)) { return string.Format("{0}", item); } return string.Format("\"{0}\"", item); } #endregion
Advertisement
About Ronnie Diaz
Ronnie Diaz is a software engineer and tech consultant. Ronnie started his career in front-end and back-end development for companies in ecommerce, service industries and remote education. This work transitioned from traditional desktop client-server applications through early cloud development. Software included human resource management and service technician workflows, online retail e-commerce and electronic ordering and fulfillment, IVR customer relational systems, and video streaming remote learning SCORM web applications. Hands on server experience and software performance optimization led to creation of a startup business focused on collocated data center services and continued experience with video streaming hardware and software. This led to a career in Amazon Prime Video where Ronnie is currently employed, building software and systems which stream live sports and events for millions of viewers around the world.Posted on March 11, 2013, in Uncategorized and tagged csv, extension method, linq, linq to csv, list. Bookmark the permalink. Leave a comment.
Leave a comment
Comments 0