使用实体框架查找SQL表中的所有重复记录 [英] Find all duplicate records in SQL table with Entity Framework

查看:155
本文介绍了使用实体框架查找SQL表中的所有重复记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有这个表:

 商店
ID名称地址城市
------------------------ -----------------
1 name1地址1 city1
2名称2 adress2 city2
3名称2
4名称2 city2
5名称3
6名称4 adress4 city4
7名称4 adress4 city4

,我的datagrid必须包含:

  2名称2 adress2 city2 
3名称2
4名称2 city2
6名称4 adress4 city4
7名称4 adress4 city4

但是我不知道如何创建这个查询

解决方案

如果你使用Entity Framework我假设你使用LINQ作为在这种情况下,请尝试以下方式:





  var duplicateates = Shop.GroupBy(i => i.Name)
.Where(x => x.Count()> 1)
.Select(val => val.Key);

foreach(重复的var项目)
{
//进程
}

在一个简单的示例中,输出将如下所示:



//编辑:



通过多个列可以使用以下语法:

  var query =(from sh in Shop 
group sh by new { sh.Name,sh.Address,sh.City} into grp
select new
{
name = grp.Key.Name,
address = grp.Key.Address,
city = grp.Key.City
})ToList()
.GroupBy(q => q.name)
.Where(q => q.Count )> 1)
.Dump();

这将导致以下内容:





// EDIT2 :
有时我是边界愚蠢的。
遵循KISS原则:

  var query = Shop.GroupBy(s => s.Name)。 Where(s => s.Count()> 1).Dump(); 


I want to create a datagrid which contains all the records with then same name.

I have this table:

Shop
ID name          adress            city
-----------------------------------------
1  name1         adress 1          city1
2  name 2        adress2           city2
3  name 2        
4  name 2                          city2
5  name 3        
6  name 4        adress4           city4
7  name 4        adress4           city4

and my datagrid must contain:

2  name 2        adress2           city2
3  name 2        
4  name 2                          city2
6  name 4        adress4           city4
7  name 4        adress4           city4

but I have no idea how to create this query

解决方案

If you use Entity Framework I assume you use LINQ as well.

In which case, try it this way:

var duplicates = Shop.GroupBy(i => i.Name)
                     .Where(x => x.Count() > 1)
                     .Select(val => val.Key);

foreach(var item in duplicates)
{
    //process
}

In a simple example the output would look like this:

//EDIT:

if you want to group by multiple columns you can use this syntax:

var query = (from sh in Shop
     group sh by new {sh.Name, sh.Address, sh.City} into grp
     select new
     {
        name = grp.Key.Name,
        address = grp.Key.Address,
        city = grp.Key.City
     }).ToList()
       .GroupBy(q => q.name)
       .Where (q => q.Count() >1)
       .Dump();

This will result in the following:

//EDIT2: sometimes I am borderline stupid. Following the KISS-principle:

var query = Shop.GroupBy (s => s.Name).Where (s => s.Count () > 1).Dump();

这篇关于使用实体框架查找SQL表中的所有重复记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆