Provera duplikata u kolekciji (FOREACH, LINQ ANY, LINQ ALL)

PHOTO EMBED

Mon Sep 26 2022 08:33:41 GMT+0000 (Coordinated Universal Time)

Saved by @necamat #c#

// FOREACH
public static bool ContainsDuplicates < T > ( this IEnumerable < T > enumerable )
{
    HashSet < T > knownElements = new ( ) ;
    foreach ( T element in enumerable )
   {
     if ( ! knownElements.Add ( element ) )
       {
         return true ;
       }
     
    }                              
    return false ;
}
//HashSet . Add returns false if the element is already present

//LINQ ANY
public static bool ContainsDuplicates < T > ( this IEnumerable < T > enumerable )
{ 
    HashSet < T > knownElements = new ( ) ;
    return enumerable.Any(element => !knownElements.Add(element));
}

//LINQ ALL
public static bool ContainsDuplicates < T > ( this IEnumerable < T > enumerable )
{ 
    HashSet < T > knownElements = new ( ) ;
    return !enumerable.All(knownElements.Add);
}


// primena
List < int > numbers = new ( ) { 1 , 2 , 3 , 3 , 4 , 5 } ;
  if ( numbers.ContainsDuplicates ( ) )
{  
    // Do something when there are duplicates
}

                                               
                                               
content_copyCOPY