首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IEqualityComparer异常与Linq (NotSupportedException)

IEqualityComparer异常与Linq (NotSupportedException)
EN

Stack Overflow用户
提问于 2014-08-27 10:42:50
回答 1查看 338关注 0票数 1

我正在做一个自定义比较器来比较Linq查询中的两个类,如下所示:

代码语言:javascript
复制
Table<Info> table = context.GetTable<Info>();
bool infoAlreadyExists = table.Contains(info, new MyComparer());

这是我的比较者:

代码语言:javascript
复制
public class MyComparer : IEqualityComparer<Info>
{

    #region IEqualityComparer<Info> Member

    public bool Equals(Info x, Info y)
    {
        return x.Content == y.Content;
    }

    public int GetHashCode(Info obj)
    {
        return obj.Content.GetHashCode();
    }

    #endregion
}

问题是我得到了一个例外。[System.NotSupportedException]

异常告诉我,找到了不支持的Contains操作符重载。我做错什么了吗,还是真的是NotSupported?我在文件上什么都找不到。

这是我试图使用的contains方法的重载的定义。

代码语言:javascript
复制
public static bool Contains<TSource>(this IQueryable<TSource> source, TSource item, IEqualityComparer<TSource> comparer);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-27 10:45:18

Contains方法的那个版本不是supported.You,在这里可以看到完整的列表:

  • 支持和不支持LINQ方法(LINQ到实体)

因此,您需要在内存中执行此操作,可以使用AsEnumerable

但在这种情况下,你似乎不需要平等的比较器。您可以使用下面的查询获得相同的结果:

代码语言:javascript
复制
table.FirstOrDefault(x => x.Content == info.Content) != null;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25525064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档