Pregunta

Estoy teniendo un problema con la biblioteca de LINQ dinámica. Puedo obtener un el siguiente error "ParserException fue no controlada por el código de usuario") 'o' '". Tengo una dicitionary y quiero crear una consulta basada en este diccionario. Bucle de modo que a través de mi diccionario y anexados a un generador de cadenas "PERSONID = (GUID del diccionario). Creo que el problema es si yo añado a PERSONID por alguna razón me parece que no puede convertir mi GUID de cadena a un Guid por lo que la biblioteca dinámica no accidente.

He probado este GUID para convertir mi cadena a un GUID, pero no hubo suerte.

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

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

Estoy utilizando VS 2010 RTM y Servicios RIA, así como el 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));

Por favor, ayuda, y si usted sabe de una mejor forma de hacer esto estoy abierto a sugerencias.

¿Fue útil?

Solución

Utilice una consulta con parámetros, por ejemplo:.

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

Otros consejos

Para la comparación GUID con linq uso dinámico propiedades de la consulta y de los método equals () como en el ejemplo proporcionado.

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

¿Usted intentó (nótese el extra ')').

   query.Append("(PersonId = Guid(" + person.Key + "))");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top