Как я могу определить, существует ли этот словарный ключ в C #?

Я предпочитаю использовать оконные функции (MySQL 8.0+), чтобы найти дубликаты, потому что я мог видеть целую строку:

WITH cte AS (
  SELECT *
    ,COUNT(*) OVER(PARTITION BY col_name) AS num_of_duplicates_group
    ,ROW_NUMBER() OVER(PARTITION BY col_name ORDER BY col_name2) AS pos_in_group
  FROM table
)
SELECT *
FROM cte
WHERE num_of_duplicates_group > 1;

DB Fiddle Demo

422
задан JasonMArcher 10 July 2014 в 21:24
поделиться

3 ответа

Вы можете использовать ContainsKey :

if (dict.ContainsKey(key)) { ... }

или TryGetValue :

dict.TryGetValue(key, out value);

Обновление : в соответствии с к комментарию фактический класс здесь не IDictionary , а PhysicalAddressDictionary , поэтому методы Contains и TryGetValue работают в так же.

Пример использования:

PhysicalAddressEntry entry;
PhysicalAddressKey key = c.PhysicalAddresses[PhysicalAddressKey.Home].Street;
if (c.PhysicalAddresses.TryGetValue(key, out entry))
{
    row["HomeStreet"] = entry;
}

Обновление 2: вот рабочий код (скомпилированный задающим вопрос)

PhysicalAddressEntry entry;
PhysicalAddressKey key = PhysicalAddressKey.Home;
if (c.PhysicalAddresses.TryGetValue(key, out entry))
{
    if (entry.Street != null)
    {
        row["HomeStreet"] = entry.Street.ToString();
    }
}

... с внутренним условным условием, повторяемым по мере необходимости для каждого требуемого ключа. TryGetValue выполняется только один раз для PhysicalAddressKey (дома, на работе и т. Д.).

826
ответ дан 22 November 2019 в 23:05
поделиться

Какой тип c.PhysicalAddresses ? Если это Dictionary , то вы можете использовать метод ContainsKey .

11
ответ дан 22 November 2019 в 23:05
поделиться

PhysicalAddressDictionary.TryGetValue

 public bool TryGetValue (
    PhysicalAddressKey key,
    out PhysicalAddressEntry physicalAddress
     )
5
ответ дан 22 November 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: