Text version of the video
http://csharp-video-tutorials.blogspo...
Slides
http://csharp-video-tutorials.blogspo...
LINQ Tutorial - All Text Articles & Slides
http://csharp-video-tutorials.blogspo...
LINQ Tutorial Playlist
https://www.youtube.com/playlist?list...
Dot Net, SQL, Angular, JavaScript, jQuery and Bootstrap complete courses
https://www.youtube.com/user/kudvenka...
The following operators belong to Set operators category
Distinct
Union
Intersect
Except
In this video we will discuss Distinct operator. This operator returns distinct elements from a given collection.
Example 1: Return distinct country names. In this example the default comparer is being used and the comparison is case-sensitive, so in the output we see country USA 2 times.
string[] countries = { "USA", "usa", "INDIA", "UK", "UK" };
var result = countries.Distinct();
foreach (var v in result)
{ Console.WriteLine(v);
}
Example 2: For the comparision to be case-insensitive, use the other overloaded version of Distinct() method to which we can pass a class that implements IEqualityComparer as an argument. In this case we see country USA only once in the output.
string[] countries = { "USA", "usa", "INDIA", "UK", "UK" };
var result = countries.Distinct(StringComparer.OrdinalIgnoreCase);
foreach (var v in result)
{ Console.WriteLine(v);
}
When comparing elements, Distinct() works in a slightly different manner with complex types like Employee, Customer etc.
Example 3: Notice that in the output we don't get unique employees. This is because, the default comparer is being used which will just check for object references being equal and not the individual property values.
List[Employee] list = new List[Employee]()
{ new Employee { ID = 101, Name = "Mike"}, new Employee { ID = 101, Name = "Mike"}, new Employee { ID = 102, Name = "Mary"}
};
var result = list.Distinct();
foreach (var v in result)
{ Console.WriteLine(v.ID + "\t" + v.Name);
}
To solve the problem in Example 3, there are 3 ways
1. Use the other overloaded version of Distinct() method to which we can pass a custom class that implements IEqualityComparer
2. Override Equals() and GetHashCode() methods in Employee class
3. Project the properties into a new anonymous type, which overrides Equals() and GetHashCode() methods
Example 4 : Using the overloaded version of Distinct() method to which we can pass a custom class that implements IEqualityComparer
Step 1 : Create a custom class that implements IEqualityComparer[T] and implement Equals() and GetHashCode() methods
public class EmployeeComparer : IEqualityComparer[Employee]
{ public bool Equals(Employee x, Employee y) { return x.ID == y.ID && x.Name == y.Name; } public int GetHashCode(Employee obj) { return obj.ID.GetHashCode() ^ obj.Name.GetHashCode(); }
}
Step 2 : Pass an instance of EmployeeComparer as an argument to Distinct() method
List[Employee] list = new List[Employee]()
{ new Employee { ID = 101, Name = "Mike"}, new Employee { ID = 101, Name = "Mike"}, new Employee { ID = 102, Name = "Mary"}
};
var result = list.Distinct(new EmployeeComparer());
foreach (var v in result)
{ Console.WriteLine(v.ID + "\t" + v.Name);
}
Example 5 : Override Equals() and GetHashCode() methods in Employee class
public class Employee
{ public int ID { get; set; } public string Name { get; set; } public override bool Equals(object obj) { return this.ID == ((Employee)obj).ID && this.Name == ((Employee)obj).Name; } public override int GetHashCode() { return this.ID.GetHashCode() ^ this.Name.GetHashCode(); }
}
Example 6 : Project the properties into a new anonymous type, which overrides Equals() and GetHashCode() methods
List[Employee] list = new List[Employee]()
{ new Employee { ID = 101, Name = "Mike"}, new Employee { ID = 101, Name = "Mike"}, new Employee { ID = 102, Name = "Mary"}
};
var result = list.Select(x =] new { x.ID, x.Name }).Distinct();
foreach (var v in result)
{ Console.WriteLine(" " + v.ID + "\t" + v.Name);
}
asp.net core docker Part 26 Set operators in LINQ | |
| 121 Likes | 121 Dislikes |
| 27,190 views views | 524K followers |
| Education | Upload TimePublished on 9 Aug 2014 |
Related keywords
wcf vs web api,ado.net core,sql server management studio,webkinz,webadvisor,craigslist nj,wcf one piece,asp.net core 3,ajax players,weber grill parts,webtoon,tutorials by hugo,csharp corner,mvc design pattern,asp.net machine account,servers for minecraft,asp.net core dependency injection,ado.net tutorial,services angular,ajax ontario,asp.net mvc tutorial,asp.net cos'è,csharp assembly,tutorialspoint python,sql join,services briefcase,asp.net core web api,ajax jquery,wccftech,craigslist ny,asp.net zero,csharp foreach,server memes,sql date format,services online,chase,serverless architecture,server resume,wcf c#,server books,tutorialspoint javascript,mvcc connect,ado.net mysql,services technologies gps,ajax deadpool,server jobs,cvs,website,mvc tutorial,costco hours,wcf service application,tutorialspoint spring,serverless,wcf soap,wcf cat,cool math games,wcf test client,services & training hse colombia sas,servicestack,citibank,asp.net core identity,sql union,ajax parking,sql database,asp.net core logging,mvconnect,cunyfirst,asp.net guida,wcf nba,csharp download,wcfi foundation,csharp online,wcf authentication,tutorials near me,http://asp.net,server 2019,chernobyl,ado.net descargar,web of dreams,serverminer,ajax cleaner,ado.net visual studio 2019,webassign,ado.net vs entity framework,ado.net visual studio 2017,csharp list,sql like,asp.net mvc,asp.net core tutorial,sqlite,wcfm,ajax roster,mvc architecture,http://ado.net,asp.net core mvc,ajax soccer,server hosting,wcfi,ajax dish soap,capital one,server rack,tutorialspoint html,csharp interface,craigslist,webroot,tutorialspoint reactjs,ajax request,wcf dragon ball,asp.net core 2.2,tutorialspoint python 3,sql developer,webster,services transmission company sas,sql group by,asp.net core signalr,services manager,mvc framework,ajax paving,mvc near me,tutorialspoint spring boot,mvc map,csharp online compiler,asp.net download,sql between,ado.net c# pdf,services tag dell,wcf 2019 nba,csharp switch,ado.net ventajas y desventajas,csharpstar,wcf tutorial,tutorialspoint,ajax meaning,csharp-video-tutorials.blogspot,tutorials dojo,central park 5,csharp string format,ado.net c#,asp.net core github,server status,ajax fc,server jobs nyc,asp.net core swagger,sql formatter,credit karma,services group,server error in '/' application,services windows,asp.net core 3.0,sql injection,tutorialspoint c#,wcf ria services,calculator,ado.net entity data model,sql insert,tutorialspoint tableau,services google play apk,sqlyog,asp.net core 3 release date,sql server,server job description,tutorials by a,servicenow,webcam,mvc hours,webmd symptom,csharp array,csharp enum,ajax call,asp.net core 2. guida completa per lo sviluppatore,asp.net core,server pro,server status ffxiv,cheap flights,webcrims,asp.net core hosting,services sas,tutorialspoint java,tutorialspoint java compiler,webmd,csharp to json,college football,ado.net dataset,csharp dictionary,cnn,website builder,tutorialspoint sql,asp.net web api,server side rendering,weber grills,sql server 2017,tutorialspoint spark,mvc nj,ado.net oracle,asp.net core download,csharp to vb.net,webster bank,webstaurant,tutorialsystems,ajax post,services fms publish announcement,services.msc no abre,ajax jersey,csharp operator,asp.net core razor pages,server duties,asp.net core environment variables,csharp random,century 21,services consultores,services consulting,mvcsd,services.msc,mvcsc,ado.net pdf,asp.net core configuration,ajax marvel,sql update,asp.net tutorial,mvc medical,ado.net entity data model visual studio 2019,wcfs international curriculum,mvc2,ado.net entity data model visual studio 2017,chase online,wcf api,costco,server jobs near me,webex,sql meaning,sql tutorial,sql commands,ado.net entity framework,ajax tavern,tutorialsteacher,ajax javascript,services desk,ajax greek,csharp tutorial,mvc pattern,ado.net sql server,ado.net connection,asp.net identity,mvcu,asp.net core middleware,wcf web service,mvc webadvisor,web store,mvcc,webmail,mvci,mvctc,
Không có nhận xét nào:
Đăng nhận xét