src/DotNetCommon.Core/Extensions/EnumerableExtensions.cs

(开头部分) 8KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace DotNetCommon.Extensions
{
    using DotNetCommon;
    using System;
    using System.Collections.Concurrent;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Diagnostics.CodeAnalysis;
    using System.Linq;

    /// <summary>
    /// <see cref="IEnumerable{T}"/> 扩展类
    /// </summary>
    public static class EnumerableExtensions
    {
        #region ToConcurrentDictionary
        /// <summary>
        /// 将当前集合对象转成并发字典(属性名->属性值)
        /// </summary>
        public static ConcurrentDictionary<TKey, TValue> ToConcurrentDictionary<T, TKey, TValue>(this IEnumerable<T> collections, Func<T, TKey> keySelector, Func<T, TValue> valueSelector)
        {
            var dic = new ConcurrentDictionary<TKey, TValue>();
            foreach (var collect in collections)
            {
                var key = keySelector(collect);
                var value = valueSelector(collect);
                dic.TryAdd(key, value);
            }
            return dic;
        }
        #endregion

        /// <summary>
        /// 简化 Skip((pageIndex-1) * pageSize).Take(pageSize)调用,页码从1开始
        /// </summary>
        public static IEnumerable<T> GetPage<T>(this IEnumerable<T> sequence, int pageIndex, int pageSize) =>
            sequence.Skip((pageIndex - 1) * pageSize).Take(pageSize);

        /// <summary>
        /// 判断集合中是否存在元素
        /// </summary>
        public static bool IsNotNullOrEmpty<T>(this IEnumerable<T> sequence) =>
            sequence != null && sequence.Any();

        /// <summary>
        /// 判断集合是否为空
        /// </summary>
        public static bool IsNullOrEmpty<T>(this IEnumerable<T> sequence) =>
            sequence == null || (!sequence.Any());

        /// <summary>
        /// 将当前集合中的元素根据指定的分隔符(<paramref name="separator"/>)拼接成字符串
        /// </summary>
        public static string ToStringSeparated<T>(this IEnumerable<T> sequence, string separator)
        {
            Ensure.NotNull(sequence, nameof(sequence));

            if (!sequence.Any()) { return string.Empty; }
            return string.Join(separator, sequence);
        }
后面还有 174 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。