J'ai travaillé avec une requête Linq dans une application Silverlight qui retourne uniquement la ligne d'une table qui contient la valeur maximale du champ OptionARMRunId (identité). Lorsqu'elle est exécutée dans LinqPad, la requête s'exécute correctement et renvoie la ligne correcte. Cependant, lorsqu'il est utilisé dans mon application Silverlight, l'application ne dépasse jamais l'écran de chargement (alors que le pourcentage d'état passe à 100%, le cercle bleu continue à tourner autour de la nauseam) et je reçois une erreur dans le navigateur. J'ai inclus l'instruction Linq d'origine, la déclaration telle qu'elle apparaît dans ma requête, et l'erreur ie ci-dessous.L'expression LINQ fonctionne dans LinqPad mais pas C# Silverlight Application
déclaration LINQ (fonctionne correctement):
from OptionARMProjection in OptionARMProjections.Where(row => row.OptionARMRunId == OptionARMProjections.Max(r => r.OptionARMRunId))
select OptionARMProjection
déclaration LINQ dans la classe C# (provoque une erreur lorsque l'application silverlight est exécutée):
crocodileEntities proxy = new crocodileEntities(new Uri("CrocodileDbDataService.svc", UriKind.Relative));
var ProjectionsQuery = from OptionARMProjections in proxy.OptionARMProjections.Where(row => row.OptionARMRunId == proxy.OptionARMProjections.Max(r => r.OptionARMRunId))
select OptionARMProjections;
erreur reçu dans IE8:
Plus d'information sur les événements de la page Web
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4,0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; Zune 4.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E) Horodatage: Mer, 20 janvier 2010 03:06:13 UTC
Message: Unhandled erreur dans Silverlight 2 Application La méthode 'Max' est pas pris en charge. à System.Data.Services.Client.ResourceBinder.VisitMethodCall (MethodCallExpression mce) à System.Data.Services.Client.ExpressionVisitor.Visit (Expression exp) à System.Data.Services.Client.DataServiceExpressionVisitor.Visit (expression exp) à System.Data.Services.Client.ExpressionVisitor.VisitBinary (BinaryExpression b) à System.Data.Services.Client.ResourceBinder.VisitBinary (BinaryExpression b) à System.Data.Services.Client. ExpressionVisitor.Visit (Expression exp) à System.Data.Services.Client.DataServiceExpressionVisitor.Visit (Expression exp) à System.Data.Services.Client.ExpressionVisitor.VisitLambda (LambdaExpression lambda) à System.Data.Services.Client.ExpressionVisitor.Visit (Expression exp) à System.Data.Services.Client.DataServiceExpressionVisitor.Visit (expression exp) à System.Data.Services.Client.ExpressionVisitor.VisitUnary (UnaryExpression u) à System.Data.Services.Client.ExpressionVisitor.Visit (expression exp) à System.Data.Services.Client. DataServiceExpressionVisitor.Visit (Expression exp) à System.Data.Services.Client.ExpressionVisitor.VisitExpressionList (ReadOnlyCollection
1 original) at System.Data.Services.Client.ExpressionVisitor.VisitMethodCall(MethodCallExpression m) at System.Data.Services.Client.ResourceBinder.VisitMethodCall(MethodCallExpression mce) at System.Data.Services.Client.ExpressionVisitor.Visit(Expression exp) at System.Data.Services.Client.DataServiceExpressionVisitor.Visit(Expression exp) at System.Data.Services.Client.ResourceBinder.AnalyzeProjection(MethodCallExpression mce, Boolean matchMembers, Expression& e) at System.Data.Services.Client.ResourceBinder.VisitMethodCall(MethodCallExpression mce) at System.Data.Services.Client.ExpressionVisitor.Visit(Expression exp) at System.Data.Services.Client.DataServiceExpressionVisitor.Visit(Expression exp) at System.Data.Services.Client.ResourceBinder.Bind(Expression e) at System.Data.Services.Client.DataServiceQueryProvider.Translate(Expression e) at System.Data.Services.Client.DataServiceQuery
1.get_QueryComponents() à System.Data.Services.Client.DataServiceRequest.CreateResult (Object source , le contexte DataServiceContext, rappel AsyncCallback, l'état de l'objet) à System.Data.Services.Client.DataServiceQuery`1.BeginExecute (AsyncCallback de rappel , objet état) à OptionARMChart.OptionARMUniverse.GetOptionArmProjectionsASync() à OptionARMChart.MainPage..ctor()
à OptionARMChart.App.Application_Startup (objet émetteur , StartupEventArgs e) à MS.Internal .CoreInvokeHandler.InvokeEventHandler (Int32 typeIndex, délégué handlerDelegate, expéditeur d'objets, objet args) à MS.Internal.JoltHelper.FireEvent (IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName) ligne: 1 Char: 1 Code: 0 URI: http://localhost:5004/optionarmcharttestpage.aspx
merci beaucoup, je vais essayer! – Andrew
Recevoir une erreur que l'opérateur '==' ne peut pas être appliqué aux opérandes de type 'int' et 'System.Linq.IOrderedQueryable
Andrew
mise à jour: got it avec: var ProjectionsQuery = proxy.OptionARMProjections.OrderByDescending (r => r.OptionARMRunId) .Take (1); merci encore pour l'aide – Andrew