我想创建一个数据网格,其中包含所有同名的记录。
我有这张表:
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
但我不知道如何创建这个查询
如果您使用实体框架,我假设您也使用 LINQ。
在这种情况下,请尝试以下方法:
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:
![Linqpad example](https://i.stack.imgur.com/zlFeo.jpg)
//EDIT:
如果你想按多列分组,可以使用以下语法:
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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)