2

我遇到了这个错误消息的问题,因为它出错的行实际上根本没有使用 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();
    }
}
4

2 回答 2

6

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

在这里找到答案

于 2012-06-20T10:50:13.603 回答
3

您可能没有使用Distinct(),但我猜在由Model.FeaturedOffers我猜想的可枚举链中的某个地方IQueryable使用了Distinct底层提供程序不支持的调用 - 例如 Linq to SQL 或实体框架。

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

于 2012-06-20T10:48:42.727 回答