J'ai cherché comment faire cela, et j'ai trouvé quelque chose de proche, mais pas tout à fait ce que je cherche. Je me demande si cela pourrait aider les autres aussi, mais je pourrais vraiment utiliser l'aide. J'ai une instruction SELECT assez simple je dois convertir en LINQ to SQL pour accélérer les recherches dans notre logiciel:Comment écrire SQL INNER JOIN SELECT avec plusieurs conditions (avec LIKE) requête à LINQ to SQL
SELECT Animals.*
FROM Animals
INNER JOIN AnimalAliases
ON Animals.AnimalID = AnimalAliases.AnimalID
AND AnimalAliases.Alias LIKE N'%USERINPUT%';
Fondamentalement, je veux être en mesure de faire une jointure interne avec plusieurs conditions, mais l'une des conditions n'a rien à voir avec l'une des tables, l'instruction LIKE, où je suis coincé.
var query =
from animal in context.Animals
join animalAlias in context.AnimalAliases
on new { animal.AnimalID, "USERINPUT" }
equals new { animalAlias.AnimalID, animalAlias.Alias }
select animal;
mais cela ne fonctionne évidemment pas, parce que je ne veux pas EQUALS à UserInput, je veux effectuer diverses opérations comme sur elle ..
Quelqu'un at-il aperçu?
Mais il doit retourner un IQueryable mis donc je pense que le premier est la réponse. Je l'ai effectivement compris d'une autre manière, je ne sais pas si cela aide quelqu'un ou si elle a même une validité, je n'ai pas vérifié l'exactitude: –
Philippe
IQueryable query = d'un in search.Animals rejoindre al dans search.AnimalAliases sur un. AnimalID est égal à al.AnimalID où al.Alias.Contains ("USERINPUT") sélectionne un; –
Philippe
Veuillez arrêter d'utiliser 'jointes 'dans linq. Ils obscurcissent votre code, et sont dans la plupart des situations inutiles, parce que le O/RM connaît déjà les relations. – Steven