我通过使用 LINQPad 查询现有的 OData 提要来了解 OData。使用 Netflix 提要,我试图获得获奖最多的演员名单,但我遇到了奇怪的例外情况。我的第一次尝试是:
People.OrderByDescending(p => p.Awards.Count).Take(10)
但这给了我一个5DataServiceQueryException
内在的例外:
'System.Collections.Generic.ICollection`1 类型中不存在属性 'Count' [[Netflix.Catalog.v2.Entities.TitleAward, Netflix.Catalog.v2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] ]' 在第 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 exp)
在 System .Data.Services.Client.DataServiceALinqExpressionVisitor.Visit(Expression exp)
at System.Data.Services.Client.ALinqExpressionVisitor.VisitLambda(LambdaExpression lambda)
at System.Data.Services.Client.ALinqExpressionVisitor.Visit(Expression exp)
at System.Data .Services.Client.DataServiceALinqExpressionVisitor.Visit(Expression exp)
在 System.Data.Services.Client.ALinqExpressionVisitor.VisitUnary(UnaryExpression u)
在 System.Data.Services.Client.ALinqExpressionVisitor.Visit(Expression exp)
在 System.Data.Services.Client.DataServiceALinqExpressionVisitor.Visit(Expression exp)
在 System.Data.Services.Client.ALinqExpressionVisitor.VisitExpressionList(ReadOnlyCollection 1 original) 在System.Data.Services.Client.ALinqExpressionVisitor.VisitMethodCall(MethodCallExpression m) 在 System.Data.Services.Client.ResourceBinder.VisitMethodCall(MethodCallExpression mce) 在 System.Data.Services.Client.ALinqExpressionVisitor.Visit(Expression exp) 在系统。 System.Data.Services.Client.ResourceBinder.Bind(Expression e) 处的Data.Services.Client.DataServiceALinqExpressionVisitor.Visit(Expression exp )1 original)
at System.Data.Services.Client.ALinqExpressionVisitor.VisitMethodCall(MethodCallExpression m)
at System.Data.Services.Client.ResourceBinder.VisitMethodCall(MethodCallExpression mce)
at System.Data.Services.Client.ALinqExpressionVisitor.Visit(Expression exp)
at System.Data.Services.Client.DataServiceALinqExpressionVisitor.Visit(Expression exp)
at System.Data.Services.Client.ALinqExpressionVisitor.VisitExpressionList(ReadOnlyCollection
在 System.Data.Services.Client.DataServiceQueryProvider.Translate(Expression e)
在 System.Data.Services.Client.DataServiceQuery 1.GetEnumerator() 在 System.Data.Services.Client.DataServiceQuery`1.System.Collections.IEnumerable。获取枚举器()1.Execute()
at System.Data.Services.Client.DataServiceQuery
我试图遵循这个问题的建议,但我得到的只是上述两个错误之一。
任何想法如何执行这个简单的操作?