2012-05-30 15 views
7

Por alguna razón en mi donde dice que "firstname" no existe en la Entidad de Oportunidad. Pero está configurado para la Entidad del Usuario del Sistema. ¿Alguna idea de por qué se está confundiendo? ¡Gracias!Error dentro de la instrucción Where en LINQ

  var linqQuery = (from r in gServiceContext.CreateQuery("opportunity") 
          join c in gServiceContext.CreateQuery("account") on ((EntityReference)r["accountid"]).Id equals c["accountid"] 
          join u in gServiceContext.CreateQuery("systemuser") on ((EntityReference)r["ownerid"]).Id equals u["systemuserid"] 
          where r["new_leadstatus"].Equals("100000004") && u["lastname"].Equals(rsmLastName) && u["firstname"].Equals(rsmFirstName) 
          select new 
          { 
           AccountId = !r.Contains("accountid") ? string.Empty : r["accountid"], 
           Account = !r.Contains("name") ? string.Empty : r["name"] 
          }); 

Respuesta

10

Asegúrese de poner cada cláusula where en su propia línea per Microsoft guidelines.

El donde cláusula se aplica un filtro a los resultados, a menudo utilizando una expresión booleana . El filtro especifica qué elementos excluir de la secuencia fuente. Cada donde la cláusula solo puede contener condiciones contra un solo tipo de entidad. Una condición compuesta que implica múltiples entidades no es válida. En su lugar, cada entidad debe filtrarse por separado en donde cláusulas.

var linqQuery = from r in gServiceContext.CreateQuery("opportunity") 
       join c in gServiceContext.CreateQuery("account") on ((EntityReference)r["accountid"]).Id equals c["accountid"] 
       join u in gServiceContext.CreateQuery("systemuser") on ((EntityReference)r["ownerid"]).Id equals u["systemuserid"] 
       where r["new_leadstatus"].Equals("100000004") 
       where u["lastname"].Equals(rsmLastName) && u["firstname"].Equals(rsmFirstName) 
       select new 
       { 
        AccountId = !r.Contains("accountid") ? string.Empty : r["accountid"], 
        Account = !r.Contains("name") ? string.Empty : r["name"] 
       }; 
+0

No sabía que podría tener dos declaraciones de dónde. trabajado como encanto, gracias! –

+0

Aprende algo nuevo todos los días. Gracias @Peter –

+0

Acabo de pasar un par de horas golpeando mi cabeza contra la pared por esto. Gracias. –

2

a definir su referencia a la entidad Oportunidad como 'r', pero está tratando de leer apellido de 'U'

from r in gServiceContext.CreateQuery("opportunity") 

u["firstname"] 

Cambio al final de su dónde

r["firstname"].Equals(rsmFirstName) 
+0

pero quiero comprobar el apellido de SystemUser no oportunidad y lnew_leadstatus de la oportunidad. –

Cuestiones relacionadas