private static IMobileServiceTableQuery <MovieType> ApplyOrdering <MovieType>(IMobileServiceTableQuery <MovieType> query, OrderByClause[] orderBy)
            where MovieType : class, IMovie
        {
            if (orderBy.Length == 1)
            {
                if (orderBy[0].IsAscending && orderBy[0].FieldName == "Title")
                {
                    return(query.OrderBy(m => m.Title));
                }
                else if (!orderBy[0].IsAscending && orderBy[0].FieldName == "Year")
                {
                    return(query.OrderByDescending(m => m.Year));
                }
            }
            else if (orderBy.Length == 2)
            {
                if (orderBy[1].FieldName == "Title" && orderBy[1].IsAscending)
                {
                    if (orderBy[0].FieldName == "Duration" && orderBy[0].IsAscending)
                    {
                        return(query.OrderBy(m => m.Duration).ThenBy(m => m.Title));
                    }
                    else if (orderBy[0].FieldName == "ReleaseDate" && !orderBy[0].IsAscending)
                    {
                        return(query.OrderByDescending(m => m.ReleaseDate).ThenBy(m => m.Title));
                    }
                }
            }

            throw new NotImplementedException(string.Format("Ordering by [{0}] not implemented yet",
                                                            string.Join(", ", orderBy.Select(c => string.Format("{0} {1}", c.FieldName, c.IsAscending ? "asc" : "desc")))));
        }
Esempio n. 2
0
 public IAsyncQuery <T> OrderBy <TKey>(Expression <Func <T, TKey> > keySelector)
 {
     return(new AsyncQuery <T>(from.OrderBy(keySelector)));
 }