我有以下类。
问题在于
根据这篇文章:https://msdn.microsoft.com/en-us/library/vstudio/bb348436%28v=vs.100%29.aspx,你应该这样做才能使distinct方法起作用,但是它似乎没有调用ModInfo对象上的Equals方法。是什么原因导致了这种情况?
示例值:
public class ModInfo : IEquatable<ModInfo>
{
public int ID { get; set; }
public string MD5 { get; set; }
public bool Equals(ModInfo other)
{
return other.MD5.Equals(MD5);
}
public override int GetHashCode()
{
return MD5.GetHashCode();
}
}
我使用像这样的方法将一些数据加载到该类的列表中:
public void ReloadEverything() {
var beforeSort = new List<ModInfo>();
// Bunch of loading from local sqlite database.
// not included since it's reload boring to look at
var modinfo = beforeSort.OrderBy(m => m.ID).AsEnumerable().Distinct().ToList();
}
问题在于
Distinct()
方法似乎没有起到它的作用。仍然存在相互等同的对象。根据这篇文章:https://msdn.microsoft.com/en-us/library/vstudio/bb348436%28v=vs.100%29.aspx,你应该这样做才能使distinct方法起作用,但是它似乎没有调用ModInfo对象上的Equals方法。是什么原因导致了这种情况?
示例值:
modinfo[0]: id=2069, MD5 =0AAEBF5D2937BDF78CB65807C0DC047C
modinfo[1]: id=2208, MD5 = 0AAEBF5D2937BDF78CB65807C0DC047C
我不在乎选择哪个值,因为它们很可能是一样的,因为md5值相同。