Это немного бестолково, но должно работать.
var dict = new Dictionary<int, List<int>>();
dict.Add(1, new List<int>() { 1, 2 });
dict.Add(2, new List<int>() { 4, 5 });
dict.Add(3, new List<int>() { 1, 7 });
var max = dict.Select(x => new { Key = x.Key, Value = x.Value.Max() }).OrderByDescending(x => x.Value).First().Key;
// returns 3
// Other sample input
dict.Add(1, new List<int>() { 1, 2 });
dict.Add(2, new List<int>() { 4, 7 });
dict.Add(3, new List<int>() { 1, 2 });
// returns 2
dict.Add(1, new List<int>() { 1, 2 });
dict.Add(2, new List<int>() { 4, 7 });
dict.Add(3, new List<int>() { 1, 7 });
// returns 2
dict.Add(1, new List<int>() { 1,10 });
dict.Add(2, new List<int>() { 4, 7 });
dict.Add(3, new List<int>() { 1, 7 });
// returns 1
Изменить: наименьшее значение в списке с наибольшим значением:
var min_value_in_maxList = dict.Select(x => new { Key = x.Key, ValueMax = x.Value.Max(), ValueMin = x.Value.Min() }).OrderByDescending(x => x.ValueMax).First().ValueMin;