static void PrepareData <T>(IEnumerable <T> data, List <PropertyInfo> props, List <string> columns) { if (props.Count == 0) { return; } if (columns != null) { foreach (var item in data) { Row row = new Row("<tr>", "</tr>"); foreach (var column in columns) { foreach (var prop in props) { if (prop.Name == "id" || prop.Name == "ID" || prop.Name == "Id") { row._prefix = "<tr id='" + Encode(prop.GetValue(item, null).ToString()) + "'>"; row.ID = Encode(prop.GetValue(item, null).ToString()); } if (prop.Name == column) { row.AddCell(new Cell("<td>", "</td>", prop.GetValue(item, null).ToString(), prop.PropertyType.Name)); } } } rows.AddRow(row); } } else { foreach (var item in data) { Row row = new Row("<tr>", "</tr>"); foreach (var prop in props) { if (prop.Name == "id" || prop.Name == "ID" || prop.Name == "Id") { row._prefix = "<tr id='" + Encode(prop.GetValue(item, null).ToString()) + "'>"; row.ID = Encode(prop.GetValue(item, null).ToString()); } row.AddCell(new Cell("<td>", "</td>", prop.GetValue(item, null).ToString(), prop.PropertyType.Name)); } rows.AddRow(row); } } }