Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Еще немного об LINQ...

219  
Murr_0002 знакомое лицо02.07.19 18:07
Murr_0002
NEW 02.07.19 18:07 

Еще немного об LINQ...


Дано: синглетон.


Внутри запиханы два иннер-класса - TKey & TValue.

Для обоих классов (пока интересует только ключ) переопеделены:

public static bool operator ==(Key a, Key b)
public static bool operator !=(Key a, Key b)
public override bool Equals(object o)
public override int GetHashCode()

Сделано так потому как состав классов пока не устоялся и проще поддерживать все в одном месте, чем ползать по коду.


Внутри синглетона есть словарик Dictionary_TKey_TValue. (скобки)

Помещение и доступ элементам - работают. Повторно собираемые ключи дают доступ к тем же (нужным) элементам, как планировалось.

С этой стороны никаких проблем не вижу.


Теперь определяется один статический ключ:

static TKey fristKey = new TKey("p1", "p2", "p3", "p4");

Все элементики по местам, индексирование данным ключем словарика даст соответствующее TValue.

Т.е. - проблем с поиском информации в словаре нет.


Теперь приспичило мне написать простой подсчет количества вхождений ключ-значение pар с данным ключем в словарик.

Для тех, кто сразу в состоянии сказать, что там ровно один уникальный ключ - подтвержу - один.

Однако:

int firstCount = dic.Select(x => x.Key == firstKey).Count();

говорит что их там 5. Там, в словаре, всего 5 элементов.


Ну и где Я сейчас чего-то не понимаю?


#1 
Срыв покровов коренной житель02.07.19 20:23
NEW 02.07.19 20:23 
в ответ Murr_0002 02.07.19 18:07
int firstCount = dic.Select(x => x.Key == firstKey).Count();

select заменить на Where


#2 
Murr_0002 знакомое лицо03.07.19 09:50
Murr_0002
NEW 03.07.19 09:50 
в ответ Срыв покровов 02.07.19 20:23

Угу... понял... боолеаны считались... их там 5.

#3 
Срыв покровов коренной житель03.07.19 10:11
NEW 03.07.19 10:11 
в ответ Murr_0002 03.07.19 09:50

прогнать дебаггером было не быстрее?

#4 
Murr_0002 знакомое лицо03.07.19 10:13
Murr_0002
03.07.19 10:13 
в ответ Срыв покровов 03.07.19 10:11

Ну так дебаггер и говорит - 5 из 5. А типы - проверять не стал.

#5 
Murr_0002 знакомое лицо03.07.19 10:32
Murr_0002
NEW 03.07.19 10:32 
в ответ Murr_0002 03.07.19 10:13

Посмотрел на это безобразие еще разок... и выкинул нафиг.

Заизолировал наполнение словарика и поставил флажек об режиме - считать ничего не надо - тупо отдать флаг и все. спок

#6