Здравствуйте, 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>>