I think most of the answers above just provide alternative ways to do exactly what you are trying to avoid. Given the data structure, no matter what implementation you choose, you / she will have to compare each element and choose the ones that match.
Depending on your matching criteria, SortedList can help you avoid searching the entire list for each request. If your list contains objects that you created, overriding GetHashCode and Equals will help you.
If the appropriate criteria are quite complex, you may need a different data structure, such as trie for strings.
source share