public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
{
result = null;
if ((indexes.Length == 1) && indexes[0] == null)
{
result = elasticProvider.Elements.ToList();
}
else if ((indexes.Length == 1) && indexes[0] is int)
{
var indx = (int)indexes[0];
var elmt = Elements.ElementAt(indx);
result = elmt;
}
else if ((indexes.Length == 1) && indexes[0] is Func<dynamic,bool>)
{
var filter = indexes[0] as Func<dynamic, bool>;
result = Elements.Where
(c => filter(c) ).ToList();
}
else
{
result = Elements.Where
(c => indexes.Cast<string>().Contains(c.InternalName)).ToList();
}
return true;
}