i don't have my code with me, but here's roughly what i did:
1) first i tokenized the criteria
string and put the key/value pairs into a hashtable, which is basically all my criteriaFind()'s duty.
2) then in another method, i go through the hashtable and grab the values out, if a value is "any"(ignore case), then i just ignore it, so for example, if you have "any" for carrier, "sfo" for origin and "any" for destination, i only need to find those DataInfo objects which have "sfo" as the origin from db.db. in another case, if all values are "any", just return all DataInfo objects.