C# 请问这段代码怎样理解?

for (int i = 0; i < array111.GetLength(0); i++)
{

          list.Add(new bestPCI { PCI22 = array111[i, 0], distant22 = array111[i, 1] });

      }

var tempList = list.GroupBy(g => g.PCI22).Select(s => new bestPCI() { PCI22 = s.Key, distant22 = s.Min(q => q.distant22) }).ToList();
var temp2 = tempList.OrderByDescending(o => o.distant22).FirstOrDefault();

        请问这段代码怎样理解?

var tempList = list.GroupBy(g => g.PCI22).Select(s => new bestPCI() { PCI22 = s.Key, distant22 = s.Min(q => q.distant22) }).ToList();
首先按照PCI22分组,然后每个分组产生一个bestPC,PCI22是分组的Key,也就是PCI22,distant22取每个分组的distant22的最小。
而temp2取按照distant22排序后最大的那条