I can't wrap my head around how to create this query. I need to select the items in List 1, if the items Cats list contains a Cat object matching the ID of one of the Cats in List2. Is this possible? Thank you
List1<pet> List1 = new List<pet>(100);
List2<cat> List2 = new List<cat>(30);
//populate lists, some of the items in List2 (cat) will be in the List1 items Cats list
//classes
class pet{
string ID;
List<cat> Cats;
}
class cat {
string ID;
string name;
}
You can just use following LINQ expression:
List1.Where(p => p.Cats.Any(c => List2.Any(c2 => c2.ID == c.ID)));
You should also be able to do that with intersect (That is if your classes have their Equals
methods overriden to check for matching IDs - see Intersect on MSDN):
List1.Where(p => p.Cats.Intersect(List2).Any())
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