コード例 #1
0
        private void UpdateRelated()
        {
            DatabaseCommands.GetDocumentsStartingWithAsync(Key + "/", 0, 15)
            .ContinueOnSuccess(items =>
            {
                if (items == null)
                {
                    return;
                }

                var linkModels = items.Select(doc => new LinkModel
                {
                    Title = doc.Key,
                    HRef  = "/Edit?id=" + doc.Key
                }).ToArray();
                Related.Set(linkModels);
            });
        }
コード例 #2
0
        private void UpdateRelated()
        {
            if (string.IsNullOrEmpty(Key) || string.IsNullOrEmpty(Seperator))
            {
                return;
            }

            var childrenTask = DatabaseCommands.StartsWithAsync(Key + Seperator, 0, 15)
                               .ContinueOnSuccess(items => items == null ? new string[0] : items.Select(i => i.Key));

            // find parent Ids
            var parentids = new List <string>();
            var id        = Key;
            var lastindex = id.LastIndexOf(Seperator, StringComparison.Ordinal);

            while (!string.IsNullOrWhiteSpace(id) && lastindex != -1)
            {
                id = id.Remove(lastindex);
                parentids.Add(id);
                lastindex = id.LastIndexOf(Seperator, StringComparison.Ordinal);
            }

            var parentsTask = ApplicationModel.Current.Server.Value.SelectedDatabase.Value.AsyncDatabaseCommands.GetAsync(parentids.ToArray(), null, metadataOnly: true)
                              .ContinueOnSuccess(results => results.Results.Where(r => r != null).Select(r => r["@metadata"].SelectToken("@id").ToString()));


            TaskEx.WhenAll(childrenTask, parentsTask).ContinueOnSuccessInTheUIThread(t =>
            {
                var linkModels =
                    childrenTask.Result
                    .Concat(parentsTask.Result)
                    .OrderBy(key => key.Length)
                    .Select(key => new LinkModel
                {
                    Title = key,
                    HRef  = "/Edit?id=" + key
                })
                    .ToArray();

                Related.Set(linkModels);
            });
        }