چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید.

آپدیت روزانه

بیش از 1000 پست آموزشی

نیازهای روز

تکه کدهای مفید سی‌شارپ - بخش 6

در پست پنجم از سری پست‎های سی‌شارپ به معرفی چند متد فوق العاده مفید برای برنامه‌نویسان و توسعه‌دهندگان نرم افزار با زبان سی‌شارپ پرداخته شد اکنون در پست ششم به معرفی چند متد دیگر خواهیم پرداخت.

بزرگترین مقدار از لیست:

/// <summary>
/// Selects the object in a list with the maximum value on a particular property
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="TValue"></typeparam>
/// <param name="list"></param>
/// <param name="predicate"></param>
/// <returns></returns>
public static T FindMax<T, TValue>(this IEnumerable<T> list, Func<T, TValue> predicate) where TValue : IComparable<TValue>
{
    var enumerable = list as T[] ?? list.ToArray();
    T result = enumerable.FirstOrDefault();
    if (result != null)
    {
        var bestMax = predicate(result);
        foreach (var item in enumerable.Skip(1))
        {
            var v = predicate(item);
            if (v.CompareTo(bestMax) > 0)
            {
                bestMax = v;
                result = item;
            }
        }
    }
    return result;
}

کوچکترین مقدار از لیست:

/// <summary>
/// Selects the object in a list with the minimum value on a particular property
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="TValue"></typeparam>
/// <param name="list"></param>
/// <param name="predicate"></param>
/// <returns></returns>
public static T FindMin<T, TValue>(this IEnumerable<T> list, Func<T, TValue> predicate) where TValue : IComparable<TValue>
{
    var enumerable = list as T[] ?? list.ToArray();
    T result = enumerable.FirstOrDefault();
    if (result != null)
    {
        var bestMin = predicate(result);
        foreach (var item in enumerable.Skip(1))
        {
            var v = predicate(item);
            if (v.CompareTo(bestMin) < 0)
            {
                bestMin = v;
                result = item;
            }
        }
    }
    return result;
}

مثال:

var l = new List<Employee>();
var r = new Random();
for (int i = 0; i < 1000000; i++) {
    l.Add(new Employee { Name = i.ToString(), Salary = r.Next(10000) });
}
 
Console.WriteLine(l.FindMin(emp => emp.Salary)?.Name);
Console.WriteLine(l.FindMax(emp => emp.Salary)?.Name);

...

امید نصری

0 نظر:

تعداد دیدگاه‌های کاربران : 0 دیدگاه
مهمان گرامی! برای ارسال نظر نیاز است وارد سایت شوید.


You must log on to comment.