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); }
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); }