本文整理汇总了C#中QueryExpression.OrderByDescending方法的典型用法代码示例。如果您正苦于以下问题:C# QueryExpression.OrderByDescending方法的具体用法?C# QueryExpression.OrderByDescending怎么用?C# QueryExpression.OrderByDescending使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QueryExpression
的用法示例。
在下文中一共展示了QueryExpression.OrderByDescending方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ProcessOrderBy
/// <summary>
/// Processes the $orderby portion of the uri. Will also add special ordering if the response would be paged.
/// </summary>
/// <param name="source">The source expression</param>
/// <returns>The result of processing the orderby</returns>
private QueryExpression ProcessOrderBy(QueryExpression source)
{
ExceptionUtilities.CheckArgumentNotNull(source, "source");
var queryBasedUri = this.currentUri as QueryBasedODataUri;
if (queryBasedUri != null && queryBasedUri.OrderByExpressions.Count > 0)
{
LinqOrderByExpression orderedQuery = null;
// rebuild the orderby expression using OrderBy and ThenBy
foreach (var orderby in queryBasedUri.OrderByExpressions)
{
ExceptionUtilities.Assert(orderby.AreDescending.Count == orderby.KeySelectors.Count, "Orderby expression had mismatched counts");
ExceptionUtilities.Assert(orderby.KeySelectors.Count > 0, "Orderby expression did not have any key selectors");
// handle the first key selector seperately, since the remainder will need to use ThenBy
int startIndex = 0;
if (orderedQuery == null)
{
var ascending = !orderby.AreDescending[0];
var lambda = orderby.KeySelectors[0];
startIndex = 1;
if (ascending)
{
orderedQuery = source.OrderBy(o => this.RewriteLambda(o, lambda));
}
else
{
orderedQuery = source.OrderByDescending(o => this.RewriteLambda(o, lambda));
}
}
// handle the remaining key selectors
for (int i = startIndex; i < orderby.AreDescending.Count; i++)
{
var ascending = !orderby.AreDescending[i];
var lambda = orderby.KeySelectors[i];
if (ascending)
{
orderedQuery = orderedQuery.ThenBy(o => this.RewriteLambda(o, lambda));
}
else
{
orderedQuery = orderedQuery.ThenByDescending(o => this.RewriteLambda(o, lambda));
}
}
}
source = orderedQuery;
}
else
{
// if this uri was not built from a query, then we cannot handle orderby expressions
var orderByString = this.currentUri.OrderBy;
ExceptionUtilities.Assert(string.IsNullOrEmpty(orderByString), "Non-query-based uri had non-empty orderby string '{0}' which cannot be processed", orderByString);
}
// add ordering if the response would be paged
if (this.IsPaged())
{
source = this.AddOrderingForPaging(source);
}
return source;
}