我发现这段非常方便的小代码可以使用存储在列表中的给定类的属性来构建逗号分隔值的列表(只需 google ToComma 链接 - 文章在 codeproject 上)。
我已经对其进行了修改以处理特定的分隔符,并且效果很好,但是有时,给定对象的某些属性将包含空值,我想知道是否可以扩展此代码以处理空值并替换它是基于属性类型的默认值,即如果是字符串,则将 null 替换为 string.empty,如果是数字,则将其替换为 0,如果是布尔值,则将其替换为 false。
如果我试图构建的逗号分隔值的属性碰巧包含一个空值,它将引发错误,即对象引用未设置为实例...
这是代码:
public static string ToSeparator<T, TU>(this IEnumerable<T> source,
Func<T, TU> func, string separator)
{
return string.Join(separator, source.Select(s => func(s).ToString()).ToArray());
}
假设您有一个列表,即列表人员,其中 Person 对象由 FirstName、Surname 和 Age 组成,例如,您可以简单地调用它:
persons.ToSeparator(m => m.FirstName, "-");
persons.ToSeparator(m => m.Age, "-");
这可以使用上面的代码来完成吗?如果无法使用上述代码完成,那么使用链接和/或 lambda 表达式处理此问题的最佳方法是什么。
谢谢。