Example #1
0
        private static void ComplexQuery()
        {
            string inputFilePath = "../../complex-query.xml";
            var    searchQuery   = Helpers.DeserializeFromXml <ComplexQuery>(inputFilePath);

            SearchResults sr = new SearchResults();

            searchQuery.Query.ForEach(q =>
            {
                ResultSet rs = new ResultSet();
                var dbSearch = SessionState.db.Bookmarks.AsQueryable();
                if (q.Tag != null && q.Tag.Any())
                {
                    q.Tag.ForEach(t =>
                    {
                        dbSearch = dbSearch.Where(b => b.Tags.Any(x => x.Name == t));
                    });
                }

                if (!string.IsNullOrEmpty(q.Username))
                {
                    dbSearch = dbSearch.Where(b => b.User.Username == q.Username);
                }

                if (q.MaxResults > 0)
                {
                    dbSearch = dbSearch.Take(q.MaxResults);
                }
                else
                {
                    dbSearch = dbSearch.Take(10);
                }

                dbSearch.OrderBy(x => x.Title).ToList().ForEach(r =>
                {
                    Library.Bookmark b = new Library.Bookmark();
                    b.Username         = r.User.Username;
                    b.Title            = r.Title;
                    b.Url   = r.URL;
                    b.Tags  = string.Join(", ", r.Tags.OrderBy(x => x.Name).Select(x => x.Name));
                    b.Notes = r.Notes;
                    rs.Bookmarks.Add(b);
                });

                sr.ResultSet.Add(rs);
            });

            string outputFilePath = "../../search-results.xml";

            Helpers.SerializeToXml(sr, outputFilePath);
        }
Example #2
0
        private static void ComplexQuery()
        {
            string inputFilePath = "../../complex-query.xml";
            var searchQuery = Helpers.DeserializeFromXml<ComplexQuery>(inputFilePath);

            SearchResults sr = new SearchResults();
            searchQuery.Query.ForEach(q =>
            {
                ResultSet rs = new ResultSet();
                var dbSearch = SessionState.db.Bookmarks.AsQueryable();
                if (q.Tag != null && q.Tag.Any())
                {
                    q.Tag.ForEach(t =>
                    {
                        dbSearch = dbSearch.Where(b => b.Tags.Any(x => x.Name == t));
                    });
                }

                if (!string.IsNullOrEmpty(q.Username))
                {
                    dbSearch = dbSearch.Where(b => b.User.Username == q.Username);
                }

                if (q.MaxResults > 0)
                {
                    dbSearch = dbSearch.Take(q.MaxResults);
                }
                else
                {
                    dbSearch = dbSearch.Take(10);
                }

                dbSearch.OrderBy(x => x.Title).ToList().ForEach(r =>
                {
                    Library.Bookmark b = new Library.Bookmark();
                    b.Username = r.User.Username;
                    b.Title = r.Title;
                    b.Url = r.URL;
                    b.Tags = string.Join(", ", r.Tags.OrderBy(x => x.Name).Select(x => x.Name));
                    b.Notes = r.Notes;
                    rs.Bookmarks.Add(b);
                });

                sr.ResultSet.Add(rs);
            });

            string outputFilePath = "../../search-results.xml";
            Helpers.SerializeToXml(sr, outputFilePath);
        }