Вы можете использовать LINQ для выполнения обоих действий:
Customer[] customers; // initialized somehow...
var customerDictionary = customers.Distinct().ToDictionary( cust => cust.SomeKey );
Если вы будете строить словарь менее простым способом, вы можете просто использовать метод расширения Distinct()
, чтобы получить уникальный массив, например:
Customer[] uniqueCustomers = customers.Distinct().ToArray();
Если вам необходимо знать о возможных дубликатах, сначала вы можете использовать GroupBy( c => c )
, чтобы определить, какие элементы имеют дубликаты.
Наконец, если вы не хотите использовать LINQ, вы можете создать словарь на лету и использовать проверку предварительных условий при добавлении каждого элемента:
var customerDictionary = new Dictionary<Customer,string>();
foreach( var cust in customers )
{
if( !customerDictionary.ContainsKey(cust) )
customerDictionary.Add( cust, cust.SomeKey );
}