Come posso unire LINQ a SQL senza una corrispondenza esatta? Ad esempio, supponiamo di avere un tavolo form
con i dati John Smith (2)
e voglio unirlo al campo Smith
nella tabella name
. Qualcosa di simileL'uso contiene in join LINQ to SQL
var query =
from f in db.form
join n in db.name
on f.nameField like '%' + n.firstName + '%'
Anche se la parola like
non sembra essere a mia disposizione.
Non so se si tratta di un errore di implementazione strano nel mio codice o meno, ma questo mi ha dato un errore: "Solo gli argomenti che possono essere valutati sul client sono su pported per il metodo String.Contains. Ho funzionato usando 'IndexOf' invece di' Contains' come dettagliato [qui] (http://stackoverflow.com/a/7574433/1080891) –
@CavynVonDeylen Hmm, che sembra essere una limitazione di Linq-to-SQL. 'string.Contains' è il meccanismo standard in altri ORM. –
@CavynVonDeylen si può provare a fare il seguente 'da n in db.name.ToList(). Dove (x => f.nameField.Contains (x.firstName))'. Il metodo '.ToList()' valuta l'entità impostata e mette tutto in memoria del database. Facendo ciò, puoi usare il metodo 'string.Contains()'. Basta essere consapevoli e non valutare tutti gli oggetti nella tabella in una sola volta. –