0
如果我正确理解了Except lambda的行为,它应该返回col1中的所有项目,但不是col2中的所有项目。 在下面的例子中,它应该返回带有空ID的两个项目。 问题:它返回只有一个项目有一个空ID ...除了Lambda表达式还过滤器重复
var col2 = new List<StaffSkill>
{
new StaffSkill { SkillID = "12" },
};
var col1 = new List<StaffSkill>
{
new StaffSkill { SkillID = "12" },
new StaffSkill { SkillID = null },
new StaffSkill { SkillID = null },
};
var res = col1.Except(col2);
if (res.Any())
{ }
哪里StaffSkill是
public class StaffSkill
{
public string SkillID { get; set; }
protected bool Equals(StaffSkill other)
{
return string.Equals(SkillID, other.SkillID, StringComparison.OrdinalIgnoreCase);
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((StaffSkill) obj);
}
public override int GetHashCode()
{
return (SkillID != null ? StringComparer.OrdinalIgnoreCase.GetHashCode(SkillID) : 0);
}
}
有没有解释这种行为。看来,除了拉姆达还过滤col1集合中具有相同ID的项目...
我错过了什么?
谢谢 塞巴斯蒂安