MoreLINQ使えばMinBy/MaxByがある
(複数返すからTじゃなくIEnumerable<T>的なのが返される)

リスト埋めるやつもMoreLINQ使えば比較的読みやすい
var labels = new List<Label>().Pad(10, _ => new Label());