在我的数据库中,我得到了一个名为hashcode的列。此列存储图片的哈希码。我想运行一个查询,使用linq到实体搜索重复的哈希码。
我遇到了'where子句'。我如何比较哈希码?
var ans = this.pe.TPicture.Where(p => this.pe.TPicture.Count(x => x.Equals(p)) > 1);
答案 0 :(得分:1)
您也可以使用count
来学习linq查询,请参阅http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
在你的情况下
entities.Where(p => entities.Count(x => x.Equals(p)) > 1);
以上查询的顺序为O(n^2)
但您可以使用O(n log(n))
entities.Sort();
List<x> repeatedItems = new List<x>();
if (entities.Count > 1)
{
if (entities[0].Equals(entities[1]))
{
repeatedItems.Add(entities[0]);
}
}
for (int i=0;i<entities.Count;i++)
{
if (i < entities.Count -1)
{
if (entities[i].Equals(entities[i+1]))
{
repeatedItems.Add(entities[i+1]);
}
}