gpt4 book ai didi

c# - 使用 Entity Framework 在 SQL 表中查找所有重复记录

转载 作者:太空狗 更新时间:2023-10-29 19:57:06 25 4
gpt4 key购买 nike

我想创建一个数据网格,其中包含所有具有相同名称的记录。

我有这张表:

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

我的数据网格必须包含:

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

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

最佳答案

如果您使用 Entity Framework,我假设您也使用 LINQ。

在这种情况下,尝试这样:

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

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

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

//编辑:

如果你想按多列分组,你可以使用这个语法:

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();

这将导致以下结果:

second result

//编辑2:有时我近乎愚蠢。遵循 KISS 原则:

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

关于c# - 使用 Entity Framework 在 SQL 表中查找所有重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18955987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com