AmazedSaint.Elastic.Lib.ElasticObject.TryGetIndex C# (CSharp) Method

TryGetIndex() public method

Handle the indexer operations
public TryGetIndex ( GetIndexBinder binder, object indexes, object &result ) : bool
binder System.Dynamic.GetIndexBinder
indexes object
result object
return bool
        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;
        }