Find items from a list which exist in another list

c#, collections, lambda, linq

Solution

What you want to do is `Join` the two sequences. LINQ has a `Join` operator that does exactly that:

List<PropX> first;
List<PropA> second;

var query = from firstItem in first
    join secondItem in second
    on firstItem.b equals secondItem.b
    select firstItem;

Note that the `Join` operator in LINQ is also written to perform this operation quite a bit more efficiently than the naive implementations that would do a linear search through the second collection for each item.

Problem

I have a `List<PropA>` ``` PropA { int a; int b; } ``` and another `List<PropX>` ``` PropX { int a; int b; } ``` Now i have to find items from `List<PropX>` which exist in `List<PropA>` matching b property using lambda or LINQ.

Original source