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

edi*_*ode 2 .net c# linq

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

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

tr style="display: @( Model.FeaturedOffers.Count() == 0 ? "" : "none" ) " id="none">
Run Code Online (Sandbox Code Playgroud)

这是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();
    }
}
Run Code Online (Sandbox Code Playgroud)

edi*_*ode 5

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

在这里找到答案

  • 请注意,如果这是一个表,您将所有这些记录从数据库中强制转移到内存中 - 您可能最好还是编写SP以返回所有唯一商品. (2认同)