我正在做一个自定义比较器来比较Linq查询中的两个类,如下所示:
Table<Info> table = context.GetTable<Info>();
bool infoAlreadyExists = table.Contains(info, new MyComparer());这是我的比较者:
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方法的重载的定义。
public static bool Contains<TSource>(this IQueryable<TSource> source, TSource item, IEqualityComparer<TSource> comparer);发布于 2014-08-27 10:45:18
Contains方法的那个版本不是supported.You,在这里可以看到完整的列表:
因此,您需要在内存中执行此操作,可以使用AsEnumerable。
但在这种情况下,你似乎不需要平等的比较器。您可以使用下面的查询获得相同的结果:
table.FirstOrDefault(x => x.Content == info.Content) != null;https://stackoverflow.com/questions/25525064
复制相似问题