C# 忽略IEnumerable C中具有相同属性的相同值的记录

C# 忽略IEnumerable C中具有相同属性的相同值的记录,c#,asp.net,linq,C#,Asp.net,Linq,我想获取所有具有不同bugetType属性值的记录,并忽略所有具有相同bugetType属性值的记录…如何做到这一点 FreelancerProjectsNoduplication = _context.FreelancerProjects.GroupBy(f => f.BugetType).Where(g => g.Count() > 1).SelectMany(g => g), .Distinct方法有一个重载,该重载将IEqualityComparer作为第一个参

我想获取所有具有不同bugetType属性值的记录,并忽略所有具有相同bugetType属性值的记录…如何做到这一点

FreelancerProjectsNoduplication = _context.FreelancerProjects.GroupBy(f => f.BugetType).Where(g => g.Count() > 1).SelectMany(g => g),
.Distinct方法有一个重载,该重载将IEqualityComparer作为第一个参数。例如,如果要基于SomeInt属性对SomeClass的集合执行.Distinct操作,可以使用像SomeClassComparer一样实现的IEqualityComparer:

然后你可以收集someclass.distinctnewsomeclasscomparer


有关IEqualityComparer的更多信息,请参见

Try.GroupByf=>f.BugetType.Whereg=>g.Count>1.SelectManyg=>g@LasseV.Karlsen你确定g.Count>1取类型为repeat而不是g.Count==1取类型为repeat而不是g.Count==1也就是我认为他的意思是GroupByf=>f.BugetType.Selectg=>g.First但问题是Unclari使用了两种方法g>1和g==1第一种方法g>1获取所有记录,第二种方法不获取任何记录我看到了我提供的评论中的漏洞,但我希望他也看到,以便澄清使用的语言。我已经用一个文字示例进行了注释,但我也怀疑这是他想要的。如果您使用了我注释中的代码,但它仍然返回所有行,这意味着您有不同的BugetType值。
public class SomeClass
{
    public string SomeString { get; set; }

    public int SomeInt { get; set; }
}

public class SomeClassComparer : IEqualityComparer<SomeClass>
{
    public bool Equals(SomeClass x, SomeClass y)
    {
        return x.SomeInt.Equals(y.SomeInt);
    }

    public int GetHashCode(SomeClass obj)
    {
        return obj.SomeInt.GetHashCode();
    }
}