相关疑难解决方法(0)

C#与IEnumerable <T>的区别在于自定义IEqualityComparer

这就是我想要做的.我正在使用LINQ to XML查询XML文件,它为我提供了一个IEnumerable <T>对象,其中T是我的"Village"类,填充了此查询的结果.有些结果是重复的,所以我想在IEnumerable对象上执行Distinct(),如下所示:

public IEnumerable<Village> GetAllAlliances()
{
    try
    {
        IEnumerable<Village> alliances =
             from alliance in xmlDoc.Elements("Village")
             where alliance.Element("AllianceName").Value != String.Empty
             orderby alliance.Element("AllianceName").Value
             select new Village
             {
                 AllianceName = alliance.Element("AllianceName").Value
             };

        // TODO: make it work...
        return alliances.Distinct(new AllianceComparer());
    }
    catch (Exception ex)
    {
        throw new Exception("GetAllAlliances", ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

由于默认的比较器不适用于Village对象,我实现了一个自定义的比较器,如AllianceComparer类中所示:

public class AllianceComparer : IEqualityComparer<Village>
{
    #region IEqualityComparer<Village> Members
    bool IEqualityComparer<Village>.Equals(Village x, Village y)
    {
        // Check whether the compared objects reference the same data.
        if (Object.ReferenceEquals(x, y)) …
Run Code Online (Sandbox Code Playgroud)

c# ienumerable distinct linq-to-xml

52
推荐指数
3
解决办法
4万
查看次数

EF Distinct(IEqualityComparer)错误

早上好!

鉴于:

public class FooClass
{
    public void FooMethod()
    {
        using (var myEntity = new MyEntity)
        {
            var result = myEntity.MyDomainEntity.Where(myDomainEntity => myDomainEntity.MySpecialID > default(int)).Distinct(new FooComparer);
        }
    }

}

public class FooComparer : IEqualityComparer<MyEntity.MyDomainEntity>
{
    public bool Equals(MyEntity.MyDomainEntity x, MyEntity.MyDomainEntity y)
    {
        return x.MySpecialID == y.MySpecialID;
    }

    public int GetHashCode(MyEntity.MyDomainEntity obj)
    {
        return obj.MySpecialID.GetHashCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

这将编译,但在运行时我将得到一个Linq to Entity could not translate Comparer-Exception.
有什么建议?

.net c# linq-to-entities entity-framework c#-3.0

14
推荐指数
1
解决办法
8000
查看次数