示例#1
0
        public List <Album> GetResults(IQuerySource session)
        {
            var nameRes = session.Query <AlbumName>().Where(n => n.Value.Contains(term))
                          .Select(n => n.Album)
                          .Distinct()
                          .ToList();

            var artistRes = session.Query <ArtistName>()
                            .Where(an => an.Value.Contains(term))
                            .SelectMany(an => an.Artist.AllAlbums)
                            .Select(an => an.Album)
                            .Distinct()
                            .ToList();

            var albumRes = session.Query <Album>()
                           .Where(an => an.OriginalRelease.CatNum.Contains(term))
                           .ToList();

            return(nameRes.Union(artistRes).Union(albumRes)
                   .ToList());

            /*return session.Query<AlbumName>()
             *      .Where(n => n.Value.Contains(term))
             *      .Select(a => a.Album)
             *      .Where(a =>
             *              a.ArtistString.Default.Contains(term)
             *              && a.ArtistString.Japanese.Contains(term)
             *              && a.ArtistString.Romaji.Contains(term)
             *              && a.ArtistString.English.Contains(term))
             *      .ToList();*/
        }
示例#2
0
        public IQueryable <Album> Query(IQuerySource session)
        {
            /*var n = artistNames.First();
             * return session.Query<ArtistName>()
             *      .Where(an => an.Value.Contains(n))
             *      .SelectMany(an => an.Artist.AllAlbums)
             *      .Select(an => an.Album)
             *      .Distinct();*/

            /*return session.Query<ArtistName>()
             *      .Where(an => artistNames.Any(na => an.Value.Contains(na)))
             *      .SelectMany(an => an.Artist.AllAlbums)
             *      .Select(an => an.Album)
             *      .Distinct();				*/

            if (artistNames.Length == 2)
            {
                var n1 = artistNames.ElementAt(0);
                var n2 = artistNames.ElementAt(1);
                return(session.Query <Album>().Where(a => a.AllArtists.Any(u => u.Artist.Names.Names.Any(an => an.Value.Contains(n1))) &&
                                                     a.AllArtists.Any(u => u.Artist.Names.Names.Any(an => an.Value.Contains(n2)))));
            }

            return(session.Query <Album>());
            //return session.Query<Album>().Where(a => artistNames.All(na => a.AllArtists.Any(u => u.Artist.Names.Names.Any(a2 => a2.Value.Contains(na)))));
        }
示例#3
0
        public IQueryable <Album> Query(IQuerySource session)
        {
            var q = session.Query <AlbumName>();

            return(FindHelpers.AddEntryNameFilter(q, string.Empty, NameMatchMode.Words, names)
                   .Select(n => n.Album));
        }
示例#4
0
 public List <Album> GetResults(IQuerySource session)
 {
     return(session.Query <AlbumTagUsage>()
            .Where(a => a.Tag.Name == tagName)
            .Select(a => a.Album)
            .ToList());
 }
示例#5
0
        private PartialFindResult <Album> GetAlbums(AlbumQueryParams queryParams, ParsedAlbumQuery parsedQuery)
        {
            var query = CreateQuery(queryParams, parsedQuery);

            var ids = query
                      .OrderBy(queryParams.SortRule, LanguagePreference)
                      .Select(s => s.Id)
                      .Paged(queryParams.Paging)
                      .ToArray();

            var albums = SortByIds(querySource
                                   .Query <Album>()
                                   .Where(s => ids.Contains(s.Id))
                                   .ToArray(), ids);

            var count = (queryParams.Paging.GetTotalCount ? query.Count() : 0);

            return(new PartialFindResult <Album>(albums, count, queryParams.Common.Query, false));
        }
示例#6
0
 private IQueryable <T> Query <T>()
 {
     return(querySource.Query <T>());
 }
示例#7
0
 public IQueryable <Album> Query(IQuerySource session)
 {
     return(session.Query <ArtistForAlbum>()
            .Where(a => a.Artist.Id == artistId)
            .Select(a => a.Album));
 }
示例#8
0
 public IQueryable <Album> Query(IQuerySource session)
 {
     return(session.Query <AlbumTagUsage>()
            .Where(a => a.Tag.Name == tagName)
            .Select(a => a.Album));
 }