У меня есть Dictionary<String,String>
следующим образом
Dictionary<String, String> MyDict = new Dictionary<String, String>();
и содержит
MyDict.Add("A", "1010");
MyDict.Add("B", "1011");
MyDict.Add("C", "1110");
MyDict.Add("D", "1010");
MyDict.Add("E", "1011");
MyDict.Add("F", "1010");
Мне нужно сравнить словарь Values
, а затем добавить key
с одинаковыми значениями
вот мой результирующий словарь
Dictionary<String, List<String>> MyResultDict = new Dictionary<String, List<String>>();
И мой код
var XXX = MyDict.ToLookup(X => X.Value, X => X.Key);
MyResultDict = MyDict.ToDictionary(X => X.Key, X => XXX[X.Value].ToList());
Приведенный выше код выдаст результат, подобный
{ "A" { "A" , "D", "F" } }
{ "B" { "B" , "E" } }
{ "C" { "C" } }
{ "D" { "A" , "D", "F" } }
{ "E" { "B" , "E" } }
{ "F" { "A" , "D", "F" } }
Но у меня есть две проблемы
Существует список дублирующихся значений (для ключей D
, E
и F
.)
Список значений содержит ключ.
Ожидаемый выход подобен
{ "A" { "D", "F" } }
{ "B" { "E" } }
Т.е. key C
не требуется, потому что значение C
нигде не повторяется.
и нет необходимости включать keys D , E and F
, поскольку он уже включен в списки значений A
и B
.
Как это сделать, используя Linq
или Lambda Expression
?