我正在使用以下内容来获取类属性和值的列表。只有其中一个属性是通用列表才能正常工作。
string table = HelperMethods.Class2Table(model, "Details", x => x.Facility, x => x.ServiceType, x => x.PatientName);
public static string Class2Table<T>(T obj, string title, params Expression<Func<T, object>>[] props)
{
StringBuilder sb = new StringBuilder();
sb.Append("<table>");
foreach (var prop in props)
{
sb.Append(GetNameAttribute(prop));
sb.Append("</td>");
sb.Append("<td>");
sb.Append(prop.Compile()(obj));
sb.Append("</td>");
sb.Append("</tr>\n");
sb.Append("<br />");
}
sb.Append("</table>");
return sb.ToString();
}
如果列表中有prop.Compile()(obj)
返回逗号分隔的字符串,该怎么办?
答案 0 :(得分:4)
您的问题可以像使用as
运算符一样轻松地解决委托返回IEnumerable<object>
的内容,如果它已经是IEnumerable<object>
,请使用{{ 3}}:
Join<T>(String, IEnumerable<T>)
是一种方便的方法 不首先连接IEnumerable<T>
集合的每个成员 将它们转换为字符串。每个对象的字符串表示形式 在IEnumerable<T>
集合中,通过调用该对象来派生 ToString方法。
object propertyValue = prop.Compile()(obj);
IEnumerable<object> enumerableValue = propertyValue as IEnumerable<object>;
if(enumerableValue != null)
{
propertyValue = string.Join(",", enumerableValue);
}
sb.Append(propertyValue);