Question

Je suis un problème avec la bibliothèque dynamique LINQ. J'obtenir l'erreur suivante « ParserException a été non gérée par le code utilisateur) » ou ", ». J'ai un Dicitionary et je veux créer une requête basée sur ce dictionnaire. Boucle donc je dans mon dictionnaire et append à un constructeur de chaîne « personID = (GUID DE DICTIONNAIRE). Je pense que le problème est si j'ajouter à personID pour une raison quelconque, je ne peux pas sembler convertir ma chaîne guid à un Guid de sorte que la bibliothèque dynamique ne tombe pas en panne.

J'ai essayé de convertir ma chaîne guid à un guid, mais pas de chance.

query.Append("(PersonId = Guid(" + person.Key + ")");

query.Append("(PersonId = " + person.Key + ")");

J'utilise VS 2010 Services RTM et RIA, ainsi que Entity Framework 4.

//This is the loop I use
foreach (KeyValuePair<Guid, PersonDetails> person in personsDetails)
{
    if ((person.Value as PersonDetails).IsExchangeChecked)
    {
        query.Append("(PersonId = Guid.Parse(" + person.Key + ")");
    }
}

//Domain service call
 var query = this.ObjectContext.Persons.Where(DynamicExpression.ParseLambda<Person, bool>(persons));

S'il vous plaît aider, et si vous connaissez une meilleure façon de le faire, je suis ouvert aux suggestions.

Était-ce utile?

La solution

Utilisation d'une requête paramétrée, par exemple:.

var query = this.ObjectContext.Persons.Where(
     "PersonId = @1", new [] { person.Key } );

Autres conseils

A titre de comparaison GUID avec des propriétés de la requête d'utilisation de LINQ dynamique et la méthode equals (), comme dans l'échantillon fourni.

var items = new[]
            {
                new { Id = Guid.Empty },
                new { Id = Guid.NewGuid() },
                new { Id = Guid.NewGuid() },
                new { Id = Guid.NewGuid() }
            };

var result = items.AsQueryable()
    .Where("Id.Equals(@0)", Guid.Empty)
    .Any();

Avez-vous essayé (notez extra ')').

   query.Append("(PersonId = Guid(" + person.Key + "))");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top