Re[3]: LINQ: минимальный элемент последовательности
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.05.08 12:25
Оценка: 9 (1)
Здравствуйте, mitix, Вы писали:

M>Спасибо большое! Тогда пока сделаю как обычно, а потом разберусь как самому такой extension method написать...


Господи, чего там разбираться?
public static class MyEnumerable
{
    public static TSource Min<TSource, TValue>(
        this IEnumerable<TSource> sources,
        Func<TSource, TValue> valueSelector)
        where TValue : IComparable<TValue>
    {
        var notSelected = true;
        var curValue = default(TValue);
        var result = default(TSource);
        foreach (var src in sources)
        {
            var val = valueSelector(src);
            if (!notSelected && curValue.CompareTo(val) < 0)
                continue;
            result = src;
            curValue = val;
            notSelected = false;
        }
        return result;
    }
}

class Pet
{
    public Pet(int age)
    {
        Age = age;
    }

    public int Age { get; private set; }
}

class Program
{
    static void Main()
    {
        var min = new[] {new Pet(2), new Pet(10), new Pet(20), new Pet(5) }.Min(pet => pet.Age);
        Console.WriteLine(min.Age);
    }
}
... <<RSDN@Home 1.2.0 alpha 4 rev. 1082 on Windows Vista 6.0.6001.65536>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.