See If Element Exists Once in Enumerable (Linq)
Given the list ...
class Item
{
public Name
{
get;
set;
}
}
List<Item> items = new List<Item>
{
new Item() { Name = "Item 1" },
new Item() { Name = "Item 1" },
new Item() { Name = "Item 2" },
new Item() { Name = "Item 3" }
}
List<Item> listing = new List<Item>
{
new Item() { Name = "Item 1" },
new Item() { Name = "Item 2" },
new Item() { Name = "Item 3" }
new Item() { Name = "Item 4" }
}
and etc.
I need to create a third array that will cancel out the double instances in between; however, items named "1" are the same, but different "instances". Thus, the third list must have 1 instance of item 1, since "elements" have 2 instances. Any ideas on how this can be done via Linq?
0
a source to share
1 answer
First you need to create EqualityComparer
for Item
.
public sealed class ItemEqualityComparer : EqualityComparer<Item>
{
public override bool Equals(Item x, Item y)
{
return x.Name.CompareTo(y.Name) == 0;
}
public override int GetHashCode(Item obj)
{
return obj.Name.GetHashCode();
}
}
Then you only need Union
.
var itemUnion = items.Union(listing, new ItemEqualityComparer());
+3
a source to share