2012-05-30 12 views
7

Per qualche ragione nel mio punto in cui si dice che "firstname" non esiste nell'opportunità. Ma è impostato per l'entità SystemUser. Qualche idea sul perché si sta confondendo? Grazie!Errore nell'istruzione Where in 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"] 
          }); 

risposta

10

Assicurati di inserire ciascuna clausola where nella propria riga per Microsoft guidelines.

Il dove clausola si applica un filtro per i risultati, spesso utilizzando un'espressione booleana . Il filtro specifica quali elementi escludere dalla sequenza sorgente. Ogni in cui la clausola può contenere solo le condizioni rispetto a un singolo tipo di entità. Una condizione composita che coinvolge più entità non è valida. Invece, ogni entità dovrebbe essere essere filtrato in separato dove clausole.

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

Non sapevo che si potevano avere due dichiarazioni in cui. ha funzionato come un incantesimo, grazie! –

+0

Impara qualcosa di nuovo ogni giorno. Grazie @Peter –

+0

Ho passato un paio d'ore a sbattere la testa contro il muro. Grazie. –

2

Definite il vostro riferimento all'entità Opportunità come 'r', ma sta tentando di leggere cognome da 'u'

from r in gServiceContext.CreateQuery("opportunity") 

u["firstname"] 

Cambio alla fine del tuo dove

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

ma voglio controllare il cognome da SystemUser non opportunità e lnew_leadstatus dall'occasione. –

Problemi correlati