用于查询运算符'Distinct'的不支持的重载

时间:2012-06-20 10:44:57

标签: c# .net linq

我遇到此错误消息时遇到问题,因为它出错的行实际上并没有使用Distinct()。我想知道这是否与我实施的IEqualityComparer有关?

它会在此行的视图中创建一个不受支持的异常,特别是.Count()

tr style="display: @( Model.FeaturedOffers.Count() == 0 ? "" : "none" ) " id="none">

这是IEqualityComparer类:

public class RewardOfferEqualityComparer : IEqualityComparer<OfferOverviewViewModel>
{
    public bool Equals(OfferOverviewViewModel x, OfferOverviewViewModel y)
    {
        return Equals(x.OfferId, y.OfferId);
    }

    public int GetHashCode(OfferOverviewViewModel x)
    {
        return x.OfferId.GetHashCode();
    }
}

2 个答案:

答案 0 :(得分:5)

发现调用.ToList().Distinct()而不是.Distinct()解决了这个问题。

找到答案here

答案 1 :(得分:3)

您可能没有使用Distinct(),但Model.FeaturedOffers代表的可枚举链中的某个地方我猜测有一个IQueryable表达式正在使用Distinct调用基础提供程序不支持 - 例如Linq to SQL或Entity Framework。

例如 - 如果您在实体框架中查询表并传递自己的比较器,那么肯定无法工作 - 因为EF无法在SQL或eSQL中重新实现比较器