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
About Ronnie Diaz
Ronnie Diaz is an enterprise software engineer responsible for front-end and back-end development for companies in many industries. Heavily involved in cloud development, online retail, e-commerce and electronic ordering, fulfillment and customer relational systems.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