/// <summary>
 /// Converts the elements of an <see cref="IEnumerable{T}" /> to the specified type.
 /// </summary>
 /// <typeparam name="TSource">The original source type of the elements of <paramref name="source" />.</typeparam>
 /// <typeparam name="T1">The type of the first parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T2">The type of the second parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T3">The type of the third parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="TResult">The converted result type of the elements of <paramref name="source" />.</typeparam>
 /// <param name="source">The <see cref="IEnumerable{T}" /> that contains the elements to be cast to type <typeparamref name="TResult" />.</param>
 /// <param name="converter">The function delegate that converts <typeparamref name="TSource" /> to a <typeparamref name="TResult" /> representation once per iteration.</param>
 /// <param name="arg1">The first parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg2">The second parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg3">The third parameter of the function delegate <paramref name="converter"/>.</param>
 /// <returns>An <see cref="IEnumerable{T}" /> that contains each element of the <paramref name="source" /> sequence converted to the specified <typeparamref name="TResult" />.</returns>
 public static IEnumerable <TResult> ParseSequenceWith <TSource, T1, T2, T3, TResult>(this IEnumerable <TSource> source, Func <TSource, T1, T2, T3, TResult> converter, T1 arg1, T2 arg2, T3 arg3)
 {
     return(EnumerableConverter.Parse(source, converter, arg1, arg2, arg3));
 }
 /// <summary>
 /// Converts the elements of an <see cref="IEnumerable{T}" /> to the specified type.
 /// </summary>
 /// <typeparam name="TSource">The original source type of the elements of <paramref name="source" />.</typeparam>
 /// <typeparam name="T">The type of the parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="TResult">The converted result type of the elements of <paramref name="source" />.</typeparam>
 /// <param name="source">The <see cref="IEnumerable{T}" /> that contains the elements to be cast to type <typeparamref name="TResult" />.</param>
 /// <param name="converter">The function delegate that converts <typeparamref name="TSource" /> to a <typeparamref name="TResult" /> representation once per iteration.</param>
 /// <param name="arg">The parameter of the function delegate <paramref name="converter"/>.</param>
 /// <returns>An <see cref="IEnumerable{T}" /> that contains each element of the <paramref name="source" /> sequence converted to the specified <typeparamref name="TResult" />.</returns>
 public static IEnumerable <TResult> ParseSequenceWith <TSource, T, TResult>(this IEnumerable <TSource> source, Func <TSource, T, TResult> converter, T arg)
 {
     return(EnumerableConverter.Parse(source, converter, arg));
 }
 /// <summary>
 /// Converts the specified <paramref name="source"/> to its <see cref="KeyValuePair{TKey,TValue}"/> equivalent sequence.
 /// </summary>
 /// <typeparam name="TKey">The <see cref="Type"/> of the key in the resulting <see cref="KeyValuePair{TKey,TValue}"/>.</typeparam>
 /// <typeparam name="TValue">The <see cref="Type"/> of the value in the resulting <see cref="KeyValuePair{TKey,TValue}"/>.</typeparam>
 /// <param name="source">An <see cref="IDictionary{TKey,TValue}"/> to convert into a <see cref="KeyValuePair{TKey,TValue}"/> equivalent sequence.</param>
 /// <returns>A <see cref="KeyValuePair{TKey,TValue}"/> equivalent sequence of <paramref name="source"/>.</returns>
 /// <exception cref="System.ArgumentNullException">
 /// <paramref name="source"/> is null.
 /// </exception>
 public static IEnumerable <KeyValuePair <TKey, TValue> > ToEnumerable <TKey, TValue>(this IDictionary <TKey, TValue> source)
 {
     return(EnumerableConverter.FromDictionary(source));
 }
 /// <summary>
 /// Converts the elements of an <see cref="IEnumerable{T}" /> to the specified type.
 /// </summary>
 /// <typeparam name="TSource">The original source type of the elements of <paramref name="source" />.</typeparam>
 /// <typeparam name="T1">The type of the first parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T2">The type of the second parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T3">The type of the third parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T4">The type of the fourth parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T5">The type of the fifth parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T6">The type of the sixth parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T7">The type of the seventh parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T8">The type of the eighth parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="T9">The type of the ninth parameter of the function delegate <paramref name="converter"/>.</typeparam>
 /// <typeparam name="TResult">The converted result type of the elements of <paramref name="source" />.</typeparam>
 /// <param name="source">The <see cref="IEnumerable{T}" /> that contains the elements to be cast to type <typeparamref name="TResult" />.</param>
 /// <param name="converter">The function delegate that converts <typeparamref name="TSource" /> to a <typeparamref name="TResult" /> representation once per iteration.</param>
 /// <param name="arg1">The first parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg2">The second parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg3">The third parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg4">The fourth parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg5">The fifth parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg6">The sixth parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg7">The seventh parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg8">The eighth parameter of the function delegate <paramref name="converter"/>.</param>
 /// <param name="arg9">The ninth parameter of the function delegate <paramref name="converter"/>.</param>
 /// <returns>An <see cref="IEnumerable{T}" /> that contains each element of the <paramref name="source" /> sequence converted to the specified <typeparamref name="TResult" />.</returns>
 public static IEnumerable <TResult> ParseSequenceWith <TSource, T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this IEnumerable <TSource> source, Func <TSource, T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> converter, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
 {
     return(EnumerableConverter.Parse(source, converter, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9));
 }
 /// <summary>
 /// Returns a hash code for this instance.
 /// </summary>
 /// <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
 public override int GetHashCode()
 {
     return(StructUtility.GetHashCode32(EnumerableConverter.FromArray(PageSize, PageNumber, (int)SortOrderDirection, Data.GetHashCode())) ^ StringUtility.GetHashCode(string.Concat(SearchCriteria, SortOrderBy)));
 }