【发布时间】:2016-01-20 06:38:44
【问题描述】:
如果我正确理解了 except lambda 的行为,它应该返回 col1 中存在的所有项目,而不是 col2 中的所有项目。 在下面的示例中,它应该返回具有空 ID 的两个项目。 问题:它只返回一个 ID 为空的项目...
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);
}
}
是否有对此行为的解释。似乎除了 lambda 还过滤了 col1 集合中具有相同 ID 的项目...
我错过了什么?
谢谢你, 塞巴斯蒂安
【问题讨论】: