public List <ParsedId> GetPreviousObjects(string id, IdType type) { var res = new List <ParsedId>(); ParsedId lastParsed = GetInfo(id, type); res.Add(lastParsed); int countIterations = 0; while (!string.IsNullOrEmpty(lastParsed.prevId) && countIterations < 10) { IdType searchType = IdType.Object; if (lastParsed.type == IdType.Room) { searchType = IdType.House; } else if (lastParsed.type == IdType.House) { searchType = IdType.Object; } lastParsed = GetInfo(lastParsed.prevId, searchType); res.Add(lastParsed); countIterations++; } return(res); }
public ParsedId GetInfo(string guId, IdType type) { ParsedId res = null; switch (type) { case (IdType.Room): //ищем комнату res = (from h in context.Room where h.ROOMGUID == guId select new ParsedId() { id = h.ROOMGUID, level = -1, name = h.ROOMNUMBER, prevId = h.HOUSEGUID, type = IdType.Room }).ToList().First(); break; case (IdType.House): //ищем дом res = (from h in context.House where h.HOUSEGUID == guId select new ParsedId() { id = guId, level = -1, name = h.HOUSENUM, prevId = h.AOGUID, type = IdType.House } ).ToList().First(); break; case (IdType.Object): res = (from o in context.Object where o.AOGUID == guId && o.ACTSTATUS == 1 select new ParsedId() { id = guId, level = o.AOLEVEL, name = o.FORMALNAME, shortName = o.SHORTNAME, prevId = o.PARENTGUID, type = IdType.Object }).ToList().First(); break; } return(res); }