Example #1
0
        /// <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());
        }
Example #2
0
 /// <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());
 }