J'ai une liste générique où l'utilisateur peut ajouter des fichiers. J'essaye de l'obtenir pour supprimer un objet si la source existe déjà dans un autre objet dans la liste. Je mentionnerai également que je suis nouveau à l'utilisation des fonctionnalités de System.Linq.C# LINQ Distinct (IEqualityComparer) aide
La liste si le type MediaInfo:
public static List<MediaInfo> imagePlaylist = new List<MediaInfo>();
C'est le code de la struct MediaInfo et IEqualityComparer:
public struct MediaInfo
{
public string source;
public char? type;
}
public class MediaInfoComparer : IEqualityComparer<MediaInfo>
{
public bool Equals(MediaInfo x, MediaInfo y)
{
return Convert.ToBoolean(string.Compare(x.source, y.source, true));
}
public int GetHashCode(MediaInfo obj)
{
if (Object.ReferenceEquals(obj, null)) return 0;
int hashProductName = obj.source == null ? 0 : obj.source.GetHashCode();
int hashProductCode = obj.type.GetHashCode();
return hashProductName^hashProductCode;
}
}
Je ne comprends pas pourquoi le Distinct (IEqualityComparer) n'est pas travail.
imagePlaylist = imagePlaylist.Distinct(new MediaInfoComparer()).ToList();
Merci,
Merci à vous deux pour les réponses. Je ne pensais même pas que l'erreur était dans string.Compare>. <. – zaza