2013-11-01 20 views
6

Desidero unire due entità nella mia applicazione MVC per l'elaborazione dei dati tramite il join LINQ.LINQ Partecipa con più condizioni AND

Per questo sto cercando di scrivere la domanda come,

from enumeration in db.Enumerations 
join cust in db.Customers on (enumeration.Value equals cust.lkpStatus &&  
enumeration.EnumerationTypeID.Contains('Cust') 

Ma io sono sempre un problema con la query, Quindi, per favore darmi qualche suggerimento su questo.

+0

http://stackoverflow.com/questions/3020442/linq-joining-in-c-sharp-with-multiple-conditions –

risposta

6

provare questa soluzione:

from enumeration in db.Enumerations.Where(e => 
              e.EnumerationTypeID.Contains('Cust')) 
join cust in db.Customers on enumeration.Value equals cust.lkpStatus 
select enumeration; 
+0

E se la condizione sarà qualcosa come ----------------------------------- dall'enumerazione in db. Enumerations.Where (x => x.EnumerationTypeID.Equals ("Customer.lkpStatus")) join cust in db.I clienti su (enumeration.Value è uguale a cust.lkpStatus) && cust.ID equivale a dati. seleziona enumerazione; –

+0

No, in questo caso utilizzare questa soluzione: dall'enumerazione in db.Enumerations.Where (x => x.EnumerationTypeID.Equals ("Customer.lkpStatus")) entra in cust in db.Customers.Where (c => c.ID == dati) su enumeration.Value equivale a cust.lkpStatus seleziona enumerazione; – alexmac

+0

Ma in questo caso non è possibile fare join perché "enumeration.Value" è una stringa mentre "cust.lkpStatus" è un valore int. –

1

Questo uno?

var data =  from c in db.Enumerations 
       from d in db.Customers 
       where c.Value.Equals(d.lkpStatus) 
       && c.EnumerationTypeID.Contains('Cust') 
       select c; 
+0

Ho provato questo ma non funzionava –

+0

'where' esegue un join interno ed escluderà i risultati in cui la seconda colonna è NULL. – Dan

20

Join dovrebbe essere fatto in questo modo:

var joinQuery = 
from t1 in Table1 
join t2 in Table2 
    on new { t1.Column1, t1.Column2 } equals new { t2.Column1, t2.Column2 } 
... 
+1

Ho fatto questo esempio e ho un errore in "join". Dice che il tipo di una delle espressioni nella clausola join non è corretto. Digitare l'inferenza non riuscita nella chiamata a "Partecipa". Sai cos'è? – Diego

+0

@Diego si prega di mostrare il codice – IDeveloper

+0

IEnumerable modello = da parte degli utenti in _db.Users uniscono groupMembers in _db.GroupMembers su nuova { users.User_id } uguale nuovo { groupMembers.User_id } Entrambi i casi sono di tipo lungo – Diego