/// <summary> /// 自定义IEnumerable~T的ToString方法 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="source">源</param> /// <param name="func">如果源是string类型func可以为null</param> /// <returns></returns> public static string ToString <T>(this IEnumerable <T> source, Func <T, string> func) where T : class { SqlServerUtilities.CheckNotEmpty(source, "source"); string str1 = string.Empty; string temp = string.Empty; foreach (var t in source) { temp = (func == null ? (t as string) : func(t)); if (!string.IsNullOrEmpty(temp)) { str1 += temp + ","; } } temp = null; return(str1.TrimEnd(',')); }
/// <summary> /// 将两个集合组合在一起,两个集合的长度必须相等 /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <typeparam name="TResult"></typeparam> /// <param name="list1">集合1</param> /// <param name="list2">集合2</param> /// <param name="func">组合的方法</param> /// <returns></returns> public static IList <TResult> Combine <T1, T2, TResult>(this IList <T1> list1, IList <T2> list2, Func <T1, T2, TResult> func) where T1 : class where T2 : class where TResult : class { SqlServerUtilities.CheckNotEmpty(list1, "list1"); SqlServerUtilities.CheckNotEmpty(list2, "list2"); SqlServerUtilities.CheckNotEmpty(func, "func"); if (list1.Count != list2.Count) { throw new ArgumentException("list1与list2的数量不相等"); } if (list1.Count == 0) { return(null); } IList <TResult> result = new List <TResult>(); for (int i = 0; i < list1.Count; i++) { result.Add(func(list1[i], list2[i])); } return(result); }
/// <summary> /// 获取主键的参数化Sql语句 /// </summary> /// <param name="keys">主键列表</param> /// <param name="parms">如果主键有值,返回参数列表</param> /// <returns></returns> private string GetPrimaryKeysParameterizedSqlString(List <MapperPropertyInfo> keys, out DynamicParameters parms) { SqlServerUtilities.CheckNotEmpty(keys, "keys"); parms = new DynamicParameters(); string sql = string.Empty; for (int i = 0; i < keys.Count; i++) { if (i == (keys.Count - 1)) { sql += string.Format("{0}=@p{1} ", "[" + keys[i].Name + "]", i); } else { sql += string.Format("{0}=@p{1} AND ", "[" + keys[i].Name + "]", i); } if (keys[i].Value != null) { parms.Add("@p" + i.ToString(), keys[i].Value); } } return(sql); }