Я предпочитаю использовать оконные функции (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;
Вы можете использовать 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 (дома, на работе и т. Д.).
Какой тип c.PhysicalAddresses
? Если это Dictionary
, то вы можете использовать метод ContainsKey
.
PhysicalAddressDictionary.TryGetValue
public bool TryGetValue (
PhysicalAddressKey key,
out PhysicalAddressEntry physicalAddress
)