Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
4 / 3 / 2
Регистрация: 28.10.2014
Сообщений: 147
1

Разность множеств для Dictionaty<string, string>

23.08.2019, 13:36. Показов 2399. Ответов 2
Метки нет (Все метки)

Здравствуйте!
есть два словаря
Dictionary<string, string> fixBlockNormalizeStrings и Dictionary<string, string> blockNormalizeStrings
пусть в fixBlockNormalizeStrings
Кликните здесь для просмотра всего текста

1,11
2,12
3,14
90,210

а в blockNormalizeStrings
Кликните здесь для просмотра всего текста

1,11
3,14
90,210
99,34

подскажите, пожалуйста ,почему после Except я не получаю ожидаемого результата
Кликните здесь для просмотра всего текста
C#
1
2
3
4
 if (fixBlockNormalizeStrings.Count > blockNormalizeStrings.Count)
              result = fixBlockNormalizeStrings.Except(blockNormalizeStrings).ToDictionary(k=>k.Key,v=>v.Value);
            else
              result = blockNormalizeStrings.Except(fixBlockNormalizeStrings).ToDictionary(k => k.Key, v => v.Value);


Добавлено через 40 минут
Судя по всему компоратор по умолчанию сравнивает и ключ и значение, а мне нужно только по ключу , только я не знаю как перегрузить компоратор по умолчанию для Dictionary

Добавлено через 15 секунд
Судя по всему компоратор по умолчанию сравнивает и ключ и значение, а мне нужно только по ключу , только я не знаю как перегрузить компоратор по умолчанию для Dictionary
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2019, 13:36
Ответы с готовыми решениями:

Реализация интерфейса IEqualityComparer для HashSet<Dictionary<string, string>>
Код выдает &quot;2&quot;, что, логично, а хотелось бы, чтобы выдавал &quot;1&quot;, так как содержание словарей...

List<string, string, string> есть ли в C# что-то подобное?
Мне надо добавить в List не только имя файла, но и некоторые строки из этого файла. Т.е. например,...

Несколько вопросов по примеру из книги по C# про строки (string и String.Format)
Я нашел такой пример кода: private void butFormatStr_Click(object sender, EventArgs e { ...

Преобразование из string[] в string
C# для меня новый язык. string s; // ... s = Environment.GetCommandLineArgs(); //...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
2
906 / 791 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
23.08.2019, 14:20 2
Лучший ответ Сообщение было отмечено yuriybolotin99 как решение

Решение

можно как-то так:
C#
1
2
3
var result = fixBlockNormalizeStrings
    .Where(kvp => !blockNormalizeStrings.ContainsKey(kvp.Key))
    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
2
4 / 3 / 2
Регистрация: 28.10.2014
Сообщений: 147
23.08.2019, 14:56  [ТС] 3
как же круто!
спасибо большое!
а я целую функцию написал для этого
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private Dictionary<string, string> MyExcept(Dictionary<string, string> first, Dictionary<string, string> second)
    {
      Dictionary<string, string> exceptDic = new Dictionary<string, string>();
      if (first.Count < second.Count)
      {
        foreach (var key in second.Keys)
        {
          if (!first.ContainsKey(key))
          {
            string buff;
            second.TryGetValue(key,out buff);
            exceptDic.Add(key, buff);
          }
        }
      }
      else 
      {
        foreach (var key in first.Keys)
        {
          if (!second.ContainsKey(key))
          {
            string buff;
            first.TryGetValue(key, out buff);
            exceptDic.Add(key, buff);
          }
        }
      }
      return exceptDic;
    }


Добавлено через 15 секунд
как же круто!
спасибо большое!
а я целую функцию написал для этого
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private Dictionary<string, string> MyExcept(Dictionary<string, string> first, Dictionary<string, string> second)
    {
      Dictionary<string, string> exceptDic = new Dictionary<string, string>();
      if (first.Count < second.Count)
      {
        foreach (var key in second.Keys)
        {
          if (!first.ContainsKey(key))
          {
            string buff;
            second.TryGetValue(key,out buff);
            exceptDic.Add(key, buff);
          }
        }
      }
      else 
      {
        foreach (var key in first.Keys)
        {
          if (!second.ContainsKey(key))
          {
            string buff;
            first.TryGetValue(key, out buff);
            exceptDic.Add(key, buff);
          }
        }
      }
      return exceptDic;
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.08.2019, 14:56

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как Dictionary<string, List<string>> поместить в DataGrid ?
Здравствуйте. Подскажите пожалуйста как поместить в DataGrid словарь Dictionary&lt;string,...

Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population
Здравствуйте! По C# есть задачка, с которой я так и не разобрался :( Задача: Создайте...

Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population
Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population....

Как использовать String.Substring(string, string)?
Есть у String метод Substring(int, int), но он принимает только числа. Я видел на видео, что можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.