public T SelectOne <K>(string property, K value) { if (indexes.GetIndex(property) is IListIndex <T, K> index) { return(index.SelectOne(value)); } return(SelectOne(property, CompareType.Equal, value)); }
public static IEnumerable <T> Select <T>(IEnumerable <T> items, QueryParameter <T> param, ListIndexes <T> indexes = null) { var index = indexes?.GetIndex(param.Name); if (index != null) { return(index.Scan(param)); } return(Search <T>(items, param)); }
public static IEnumerable <T> Select <T>(IEnumerable <T> items, QueryParameter <T> param, ListIndexes <T> indexes = null) { if (param.AlwaysTrue) { return(items); } if (param.Comparer.Type == CompareTypes.Distinct) { return(Distinct(items, param.Invoker)); } var index = indexes?.GetIndex(param.Name); if (index != null) { return(index.Scan(param)); } return(Search <T>(items, param)); }