使用linq到实体从表中获取重复项

时间:2010-10-31 10:26:08

标签: c# linq-to-entities

在我的数据库中,我得到了一个名为hashcode的列。此列存储图片的哈希码。我想运行一个查询,使用linq到实体搜索重复的哈希码。

我遇到了'where子句'。我如何比较哈希码?

var ans = this.pe.TPicture.Where(p => this.pe.TPicture.Count(x => x.Equals(p)) > 1);

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]);
                    }
            }