Я узнаю OData, запрашивая существующие каналы OData с помощью LINQPad.Используя ленту Netflix, я пытаюсь получить список актеров с наибольшим количеством наград, но я получаю странные исключения.Моя первая попытка была:
People.OrderByDescending(p => p.Awards.Count).Take(10)
Но это дало мне 5DataServiceQueryException
с внутренним исключением:
Нет свойства 'Count' в типе System.Collections.Generic.ICollection`1 [[Netflix.Catalog.v2.Entities.TitleAward, Netflix.Catalog.v2, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль]] 'в положении 7.
Я попытался немного изменить ситуацию, используя метод расширения .Count()
вместо свойства .Count
:
People.OrderByDescending(p => p.Awards.Count()).Take(10)
Но это просто игра InvalidCastException:
Невозможно привести объект типа 'System.Linq.Expressions.PropertyExpression' к типу 'System.Data.Services.Client.ResourceExpression'.
в System.Data.Services.Client.ResourceBinder.AnalyzeCountMethod (MethodCallExpression mce)
в System.Data.Services.Client.ResourceBinder.VisitMethodCall (MethodCallExpression mce)
в System.Data.Services.Client.ALinqExpressionVisitor.Visit (выражение Expression)
в System.Data.S.Client.DataServiceALinqExpressionVisitor.Visit (Expression exp)
в System.Data.Services.Client.ALinqExpressionVisitor.VisitLambda (LambdaExpression lambda)
в System.Data.Services.Client.ALinqExpressionVisitor.Visit * Expression в
.Data.Services.Client.DataServiceALinqExpressionVisitor.Visit (Expression exp)
в System.Data.Services.Client.ALinqExpressionVisitor.VisitUnary (UnaryExpression u)
в System.Data.Services.Client.itisitorExp.exp)
в System.Data.Services.Client.DataServiceALinqExpressionVisitor.Visit (Expression exp)
в System.Data.Services.Client.ALinqExpressionVisitor.VisitExpressionList (ReadOnlyCollection 1 original)<br>
at System.Data.Services.Client.ALinqExpressionVisitor.VisitMethodCall(MethodCallExpression m)<br>
at System.Data.Services.Client.ResourceBinder.VisitMethodCall(MethodCallExpression mce)<br>
at System.Data.Services.Client.ALinqExpressionVisitor.Visit(Expression exp)<br>
at System.Data.Services.Client.DataServiceALinqExpressionVisitor.Visit(Expression exp)<br>
at System.Data.Services.Client.ALinqExpressionVisitor.VisitExpressionList(ReadOnlyCollection
1 оригинал)
в.Data.Services.Client.ALinqExpressionVisitor.VisitMethodCall (MethodCallExpression m)
в System.Data.Services.Client.ResourceBinder.VisitMethodCall (MethodCallExpression mce)
в выражении System.Data.Services.Client.)
в System.Data.Services.Client.DataServiceALinqExpressionVisitor.Visit (Expression exp)
в System.Data.Services.Client.ResourceBinder.Bind (Expression e)
в System.Data.Services.Client.DataServiceQueryProvider.Translate (Выражение e)
в System.Data.Services.Client.DataServiceQuery 1.Execute()<br>
at System.Data.Services.Client.DataServiceQuery
1.GetEnumerator ()
в System.Data.Services.Client.DataServiceQuery`1.System.Collections.IEnumerable.GetEnumerator ()
Я пытался следовать предложениям на этом вопросе , но все, что я получил, - это одна из двух вышеуказанных ошибок.
Есть идеи, как выполнить эту простую операцию?