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
