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.
There are 2 ways to understand check if the list contains elements of another list. First, use all() functions to check if a Python list contains all the elements of another list. And second, use any() function to check if the list contains any elements of another one.
You can simply check to see that the set difference between query2 and query1 is the empty set: var isSubset = ! query2. Except(query1).
ListA.Where(a => ListX.Any(x => x.b == a.b))
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.
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