public IEnumerable<Book> GetFilteredSortedPage(BookFieldType sortBy, BookFieldType filterBy, string filterString)
        {
            IEnumerable<Book> initResult;
            XmlSerializer serializer = new XmlSerializer(typeof(BookList));
            lock (locker)
            {
                using (
                    StreamReader reader =
                        new StreamReader(Path.Combine(HttpContext.Current.Server.MapPath(@"~/App_Data"),
                            _booksSampleXml)))
                {
                    initResult = ((BookList)serializer.Deserialize(reader)).Books;
                }
            }
            IEnumerable<Book> filteredresult = initResult;
            IEnumerable<Book> sortedResult = initResult;

            if (!string.IsNullOrEmpty(filterString))
            {
                switch (filterBy)
                {
                    case BookFieldType.Author:
                        filteredresult = initResult.Where(x => x.Author.Contains(filterString));
                        break;

                    case BookFieldType.Title:
                        filteredresult = initResult.Where(x => x.Title.Contains(filterString));
                        break;

                    case BookFieldType.Year:
                        int year = 0;
                        if (int.TryParse(filterString, out year))
                            filteredresult = initResult.Where(x => x.Year == year);
                        break;

                }
            }

            switch (sortBy)
            {
                case BookFieldType.Author:
                    sortedResult = filteredresult.OrderBy(x => x.Author);
                    break;

                case BookFieldType.Title:
                    sortedResult = filteredresult.OrderBy(x => x.Title);
                    break;

                case BookFieldType.Year:
                    sortedResult = filteredresult.OrderBy(x => x.Year);
                    break;
            }

            return sortedResult;
        }
        public IEnumerable<Book> GetFilteredSortedPage(BookFieldType sortBy, BookFieldType filterBy, string filterString)
        {
            IEnumerable<Book> filteredresult = bookContext.Books;
            IEnumerable<Book> sortedResult = filteredresult;

            if (!string.IsNullOrEmpty(filterString))
            {
                switch (filterBy)
                {
                    case BookFieldType.Author:
                        filteredresult = bookContext.Books.Where(x => x.Author.Contains(filterString));
                        break;

                    case BookFieldType.Title:
                        filteredresult = bookContext.Books.Where(x => x.Title.Contains(filterString));
                        break;

                    case BookFieldType.Year:
                        int year = 0; if (int.TryParse(filterString, out year))
                            filteredresult = bookContext.Books.Where(x => x.Year == year);
                        break;

                }
            }

            switch (sortBy)
            {
                case BookFieldType.Author:
                    sortedResult = filteredresult.OrderBy(x => x.Author);
                    break;

                case BookFieldType.Title:
                    sortedResult = filteredresult.OrderBy(x => x.Title);
                    break;

                case BookFieldType.Year:
                    sortedResult = filteredresult.OrderBy(x => x.Year);
                    break;
            }

            return sortedResult;
        }