Вариант Enumerable.Aggregate со встроенным кортежем ((int.MaxValue, int.MaxValue)
), используемым как для сравнения, так и для хранения, аналогично тому, что опубликовал Гуру Строн. tupleArray
объявлен как именованный кортеж. Я добавил в массив еще несколько значений, чтобы было понятнее, что могут возвращать эти методы.
Это вернет первый элемент в массиве с минимальным значением (4, 1)
.
(int i1, int i2)[] tupleArray = { (3, 2), (4, 1), (1, 4), (2, 2) };
var min = tupleArray.Aggregate((int.MaxValue, int.MaxValue), (tm, t)
=> (Math.Min(t.i1, t.i2) < Math.Min(tm.Item1, tm.Item2)) ? t : tm);
Если у вас уже есть получатель, который следует использовать для сравнения, вы также можете использовать Select
:
(int i1, int i2) min = (int.MaxValue, int.MaxValue);
min = tupleArray.Select(t =>
{ return min = (Math.Min(t.i1, t.i2) < Math.Min(min.i1, min.i2)) ? t : min; }).Last();
(здесь значение, присвоенное min
, (int.MaxValue, int.MaxValue)
, может быть ранее сохраненное значение, объявленное как коллекция tupleArray
)