我遇到此错误消息时遇到问题,因为它出错的行实际上并没有使用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();
}
}
答案 0 :(得分:5)
发现调用.ToList().Distinct()
而不是.Distinct()
解决了这个问题。
找到答案here
答案 1 :(得分:3)
您可能没有使用Distinct()
,但Model.FeaturedOffers
代表的可枚举链中的某个地方我猜测有一个IQueryable
表达式正在使用Distinct
调用基础提供程序不支持 - 例如Linq to SQL或Entity Framework。
例如 - 如果您在实体框架中查询表并传递自己的比较器,那么肯定无法工作 - 因为EF无法在SQL或eSQL中重新实现比较器