There are multiple ways you can approach this problem.
Keyword Search / Advance search
This would be very helpful when you have huge data and there are numerous fields user can potentially search on. Like having a advance search feature on mail archives, here is how Outlook would do it.
- Granular control over what data to be displayed.
- Can be enriched with options to save the complex filters, create sub-queries etc.
- Can handle huge data.
- User needs to know before hand the term to be searched.
- Multi step flow.
- Favors recall vs recognition.
Grid with data
This is most suited when you have a small selection. It is bigger than something which can be displayed in select box. It can probably display multi-column data. Here user can quickly scroll in small data set select one or many and perform action.
- Kind of enriches a list view
- Provides more data for user, favors recognition and not recall.
- Suitable for relatively small data set.
- takes significant real estate, if in pop-up hides content, which disconnects user from flow
Grid data with filter
Please note that I am using the term filter here. Search is generally done when you know what data you want and fire a query when you have no data in front of you. Filter helps you filter out available data set. This is a step after you have come to search results and have a rich data set, you can further filter based on some data you can see on the grid.
- This can increase the capacity of the previous approach as user is not only dependent on scroll, but she can reduce the data to a manageable set with a quick filter
- Other pros of previous approach
- The real estate issues same as previous approach.
Probable solution for your problem
It would be B. You can further enhance it with a search if needed for your application. It is almost always good to favor recognition against recall. So if you have real estate, it is always beneficial to the user if you provide more information. You can also think about column level filters, instead of a generic text box. I am not invalidating having a generic text box. It is also a good thing to provide a sweeping filter capabilities like many contact management applications search across all the attributes of a contact, but column level filters offer more granular control.