Как насчет этого:
public T[] FuzzyFind<T>(string[] fields, string[] values) where T: class {
var dis = new Disjunction();
foreach (var f in fields)
foreach (var v in values)
dis.Add(new InsensitiveLikeExpression(f, v, MatchMode.Anywhere));
return ActiveRecordMediator<T>.FindAll(dis);
}
Тогда вы называете это так:
var locations = FuzzyFind<ARAddressableLocation>(new[] { "field1", "field2", "field3 }, new[] { "a", "b" });
, который производит все комбинации (поле, значение)
Настройте MatchMode по мере необходимости.