>>134
横からだけど
いくつか気になるところがあるけど

とりあえず最後の二つの操作をよ〜く見て動作を考えてみたらいいのでは?

var maxDataList = flaggedList.Where(data => data.Value == maxValue);
var hasMaxValue = maxDataList.Any(data => data.Key == key);