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
To find the duplicate Names in the table, we have to follow these steps: Defining the criteria: At first, you need to define the criteria for finding the duplicate Names. You might want to search in a single column or more than that. Write the query: Then simply write the query to find the duplicate Names.
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();
Try this way:
select name, adress, city
from tab
where name in ( select name
from tab
group by name
having count(name) >1 )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With