Beispiel #1
0
 public dynamic this[string column]
 {
     get
     {
         if (FrameColumns.ContainsKey(column))
         {
             return(FrameColumns[column].GetVal(Index));;
         }
         else if (CustomColumns.ContainsKey(column))
         {
             return(CustomColumns[column]);
         }
         else
         {
             throw new IndexOutOfRangeException($"Column {column} does not exist.");
         }
     }
     set
     {
         if (FrameColumns.ContainsKey(column))
         {
             FrameColumns[column].SetVal(Index, value);;
         }
         else if (CustomColumns.ContainsKey(column))
         {
             CustomColumns[column] = value;
         }
         else
         {
             throw new IndexOutOfRangeException($"Column {column} does not exist.");
         }
     }
 }
Beispiel #2
0
        public FrameDR Sel(params string[] columns)
        {
            var notfound = columns.Where(c => !FrameColumns.ContainsKey(c) || !CustomColumns.ContainsKey(c));

            if (notfound.Count() != 0)
            {
                throw new ArgumentException($"The following columns do not exist in the row: {notfound.Aggregate((s1, s2) => s1 + "," + s2)}.");
            }
            var     frameColumns = FrameColumns.Where(c => columns.Contains(c.Key));
            FrameDR dr           = null;

            if (columns.Count() != 0)
            {
                dr = new FrameDR(this.Frame, this.Index, frameColumns.Select(c => c.Value).ToArray());
            }
            else
            {
                dr = new FrameDR();
            }
            var customColumns = CustomColumns.Where(c => columns.Contains(c.Key));

            foreach (var c in customColumns)
            {
                dr.Add((c.Key, c.Value));
            }

            return(dr);
        }
Beispiel #3
0
 public FrameDR(Frame f, int index, params IColumn[] columns) : this()
 {
     Frame             = f;
     FrameColumnsArray = columns ?? throw new ArgumentNullException();
     Index             = index;
     for (int i = 0; i < FrameColumnsArray.Length; i++)
     {
         FrameColumns.Add(FrameColumnsArray[i].Label, FrameColumnsArray[i]);
     }
     foreach (var c in FrameColumns)
     {
         AddCallSite(c.Key);
     }
 }
Beispiel #4
0
 public override bool TrySetMember(SetMemberBinder binder, object value)
 {
     if (FrameColumns.ContainsKey(binder.Name))
     {
         IColumn s = (IColumn)CallSites[binder.Name].Target(CallSites[binder.Name], this.Frame);
         return(s.SetVal(Index, value));
     }
     else if (CustomColumns.ContainsKey(binder.Name))
     {
         return(CustomColumns[binder.Name] = value);
     }
     else
     {
         CustomColumns.Add(binder.Name, value);
         return(true);
     }
 }
Beispiel #5
0
 public override bool TryGetMember(GetMemberBinder binder, out object result)
 {
     result = null;
     if (FrameColumns.ContainsKey(binder.Name))
     {
         if (!CallSites.ContainsKey(binder.Name))
         {
             AddCallSite(binder.Name);
         }
         result = GetFrameColumnMember(binder.Name);
         return(true);
     }
     else if (CustomColumns.ContainsKey(binder.Name))
     {
         result = CustomColumns[binder.Name];
         return(true);
     }
     else
     {
         return(false);
     }
 }