我有一個通用列表,用戶可以添加文件。我試圖讓它刪除一個對象,如果源已經存在於列表中的另一個對象中。我還會提到我是使用System.Linq的功能的新手。C#LINQ區別(IEqualityComparer)幫助
如果類型的MediaInfo名單:
public static List<MediaInfo> imagePlaylist = new List<MediaInfo>();
這是對的MediaInfo結構和的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;
}
}
我不明白爲什麼鮮明(的IEqualityComparer)不加工。
imagePlaylist = imagePlaylist.Distinct(new MediaInfoComparer()).ToList();
謝謝,
謝謝你們兩位的答案。我什至不認爲這個錯誤是在string.Compare>。<。 – zaza