在EF我寻找重复项并进行自引用查询时,如何编写此查询?

时间:2016-04-28 16:19:52

标签: entity-framework

这是SQL语句:

SELECT f1.*
FROM [File] f1
where 1 < (select count(*) from [File] f2 where f1.FileName = f2.FileName)
order by f1.FileName

在SQL中这是一个相当简单的查询,但我不确定如何在EF中执行此操作。最接近答案的是这个(给我PK和计数),但我想要恢复完整的文件记录:

from f1 in File
join f2 in File on f1.FileName equals f2.FileName      
group f1 by f1.FileId into c
where c.Count() > 1
select new { FileId = c.Key, number = c.Count() }

2 个答案:

答案 0 :(得分:1)

您可以使用group join

from f1 in File
join f2 in File on f1.FileName equals f2.FileName into g     
where g.Count() > 1
select f1

答案 1 :(得分:0)

我通常使用带有lambda语法的EF,但是你不能只投影对象吗?

from f1 in File
join f2 in File on f1.FileName equals f2.FileName      
group f1 by f1.FileId into c
where c.Count() > 1
select c