public Result GetChildren(Folder folder, ReadType readType, out IEnumerable<Folder> folders, out IEnumerable<File> files) { if (folder == null) throw new ArgumentNullException("folder"); folders = new List<Folder>(); files = new List<File>(); SqlExpressionVisitor<Folder> folderEV = OrmLiteConfig.DialectProvider.ExpressionVisitor<Folder>(); folderEV.Where(f => f.ParentFolderId == folder.Id); if (readType == ReadType.Default) folderEV.Where(f => f.IsDeleted == false); if (readType == ReadType.OnlyDeleted) folderEV.Where(f => f.IsDeleted == true); folders = db.Select<Folder>(folderEV); var sql = new StringBuilder(@" SELECT f.FileId as Id, f.Name, f.ParentFolderId, f.IsDeleted, f.IsPurged, f.CreatedTimeStamp, f.LastModifiedTimestamp ,fv.FileStore, fv.Version as CurrentVersion, fv.Size, d.FullPath + f.Name as FullPath FROM [File] f INNER JOIN [FileVersion] fv ON fv.FileId = f.FileId AND fv.IsCurrent = 1 INNER JOIN [Folder] d ON d.FolderId = f.ParentFolderId WHERE f.ParentFolderId = {0}".Params(folder.Id)); if (readType.HasFlag(ReadType.OnlyDeleted)) sql.Append(" AND f.IsDeleted = 1"); if (readType.HasFlag(ReadType.OnlyNonDeleted)) sql.Append(" AND f.IsDeleted = 0"); files = db.Query<File>(sql.ToString()); return Result.Success; }