如果我正确理解除了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);
}
}
是否有对此行为的解释。似乎Except lambda还过滤了col1集合中具有相同ID的项目......
我错过了什么?
谢谢你, 的Sebastien
答案 0 :(得分:0)
这似乎是该方法应该如何工作。请参阅msdn documentation中的评论部分,尽管我同意应在文档中更明确地说明
为了得到重复,我会去那样打电话:
<SolidColorBrush x:Key="LoopingSelectorSelectionBackgroundThemeBrush" Color="#FFD84E53" />
我想在某些情况下可能会慢一些。