public IEnumerable <object[]> GetAllByKey(int column, object key) { int i; for (i = 0; i < cnoms.Length; i++) { if (cnoms[i] == column) { break; } } if (i == cnoms.Length) { throw new Exception("Err: 938948"); } var index = allindexes[i]; if (index is IndexDynamic <int, IndexKeyImmutable <int> > ) { IndexDynamic <int, IndexKeyImmutable <int> > ind = (IndexDynamic <int, IndexKeyImmutable <int> >)index; return(ind.GetAllByKey((int)key).Select(ent => ((object[])ent.Get())[1]).Cast <object[]>()); } else if (index is IndexDynamic <string, IndexHalfkeyImmutable <string> > ) { IndexDynamic <string, IndexHalfkeyImmutable <string> > ind = (IndexDynamic <string, IndexHalfkeyImmutable <string> >)index; return(ind.GetAllByKey((string)key).Select(ent => ((object[])ent.Get())[1]).Cast <object[]>()); } return(Enumerable.Empty <object[]>()); }
// Проверяет и, если надо, добавляет. Выдает код. //private int next_code; public int Add(string s) { var q = s_index.GetAllByKey(s) //.Where() // проверить на deleted? .Select(ent => ent.Get()) .FirstOrDefault(); int code; if (q == null) { //code = next_code; //table.AppendValue(new object[] { next_code, s }); //next_code++; code = (int)table.Count(); table.AppendValue(new object[] { code, s }); } else { code = (int)((object[])((object[])q)[1])[0]; } return(code); }
public string GetStringByCode(int cod) { // Старый вариант, Но другого нет... var qu = offsets.GetAllByKey(cod) //.Where() // какие-то проверки? .Select(ent => ent.Get()) .FirstOrDefault(); if (qu == null) { return(null); } return((string)((object[])((object[])qu)[1])[1]); }