【发布时间】:2011-08-15 02:49:25
【问题描述】:
我有一个通用列表,用户可以在其中添加文件。如果源已存在于列表中的另一个对象中,我试图让它删除一个对象。我还要提一下,我是使用 System.Linq 功能的新手。
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;
}
}
我不明白为什么 Distinct(IEqualityComparer) 不起作用。
imagePlaylist = imagePlaylist.Distinct(new MediaInfoComparer()).ToList();
谢谢,
【问题讨论】: