/// <summary> /// 把集合中的所有元素放入一个字符串。 /// </summary> /// <typeparam name="T">数据类型。</typeparam> /// <param name="items">原集合。</param> /// <param name="callback">回调方法。</param> /// <param name="separator">分隔符。</param> /// <param name="start">起始文本。如果集合为空,不包含此数据。</param> /// <param name="end">结尾文本。如果集合为空,不包含此数据。</param> /// <param name="ignoreEmptyItem">指示是否忽略集合中为 null 或 <see cref="string.Empty"/> 值的项。</param> /// <returns>拼接后的字符串。</returns> public static string Join <T>(this IEnumerable <T> items, Func <T, string> callback, string separator = ",", string start = null, string end = null, bool ignoreEmptyItem = true) { var builder = new Text.StringBuilder(); var isStringType = typeof(T) == DefineTypes.String; foreach (var item in items) { if (ignoreEmptyItem && (item == null || (isStringType && item.ToString().Length == 0))) { continue; } if (builder.Length > 0) { builder.Append(separator); } builder.Append(callback(item)); } if (builder.Length == 0) { return(string.Empty); } if (start != null) { builder.Insert(0, start); } if (end != null) { builder.Append(end); } return(builder.ToString()); }
/// <summary> /// 把集合中的所有元素放入一个字符串。 /// </summary> /// <typeparam name="T">数据类型。</typeparam> /// <param name="items">原集合。</param> /// <param name="callback">回调方法。</param> /// <param name="separator">分隔符。</param> /// <param name="start">起始文本。如果集合为空,不包含此数据。</param> /// <param name="end">结尾文本。如果集合为空,不包含此数据。</param> /// <returns>拼接后的字符串。</returns> public static string Join <T>(this IEnumerable <T> items, Func <T, string> callback, string separator = ",", string start = null, string end = null) { Text.StringBuilder builder = new Text.StringBuilder(); foreach (var item in items) { if (builder.Length > 0) { builder.Append(separator); } builder.Append(callback(item)); } if (builder.Length == 0) { return(string.Empty); } if (start != null) { builder.Insert(0, start); } if (end != null) { builder.Append(end); } return(builder.ToString()); }