Frage

ich habe ein Problem mit der Dynamic Linq-Bibliothek. Ich erhalte eine der folgenden Fehler „ParserException durch Benutzercode“) oder nicht behandelte wurde ‚‘, "“. Ich habe ein Dicitionary und ich möchte eine Abfrage erstellen, basierend auf diesem Wörterbuch. So ich Schleife durch meinen Wörterbuch und append in einem String-Builder „PersonId = (GUID aus DICTIONARY). Ich denke, das Problem ist, waren ich PersonId aus irgendeinem Grund anhängen ich nicht scheinen, um meine Schnur guid in eine Guid zu konvertieren, so dass die dynamische Bibliothek nicht abstürzen.

Das habe ich versucht, meine Schnur guid zu einem guid zu konvertieren, aber kein Glück.

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

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

Ich bin mit VS 2010 RTM und RIA Services sowie die 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));

Bitte Hilfe, und wenn Sie einen besseren Weg wissen, dies zu tun, ich bin offen für Vorschläge.

War es hilfreich?

Lösung

Verwenden Sie eine parametrisierte Abfrage, z.

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

Andere Tipps

Für GUID Vergleich mit dynamischer Linq Verwendung Abfrageeigenschaften und den Equals () -Methode wie in der mitgelieferten Probe.

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();

Haben Sie versucht, (man beachte die zusätzliche ')').

   query.Append("(PersonId = Guid(" + person.Key + "))");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top