相关疑难解决方法(0)

IEnumerable.Except()和自定义比较器

我遇到了Except()方法的麻烦.它不返回差异,而是返回原始集合.

我已经尝试在Account类中实现IEquatable和IEqualityComparer.我也尝试为Account创建一个单独的IEqualityComparer类.

当从main调用Except()方法时,它似乎不会调用我的自定义Equals()方法,但是当我尝试Count()时,它确实调用了自定义的GetHashCode()方法!

我确定我在某个地方犯了一个小错误,我希望一双新眼睛可以帮助我.

主要:

IEnumerable<Account> everyPartnerID = 
    from partner in dataContext.Partners
    select new Account { IDPartner = partner.ID, Name = partner.Name };


IEnumerable<Account> hasAccountPartnerID = 
    from partner in dataContext.Partners
    from account in dataContext.Accounts
    where
        !partner.ID.Equals(Guid.Empty) &&
        account.IDPartner.Equals(partner.ID) &&
        account.Username.Equals("Special")
    select new Account { IDPartner = partner.ID, Name = partner.Name };

IEnumerable<Account> noAccountPartnerID = 
    everyPartnerID.Except(
        hasAccountPartnerID, 
        new LambdaComparer<Account>((x, y) => x.IDPartner.Equals(y.IDPartner)));
Run Code Online (Sandbox Code Playgroud)

帐户:

    public class Account : IEquatable<Account>
    {
        public Guid IDPartner{ get; set; }
        public string Name{ get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# linq iequatable iequalitycomparer linq-to-sql

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

标签 统计

c# ×1

iequalitycomparer ×1

iequatable ×1

linq ×1

linq-to-sql ×1