SQL COMME dans Linq

Avant l'ajout de cette question, j'ai fait une recherche sur stackoverflow pour ses semblables, mais je ne pourrais pas le trouver. La plupart des questions sur internet ont été en utilisant COMME avec une chaîne de caractères (par exemple LIKE '%ABC%') mais j'ai besoin de comparer avec une colonne d'une autre table.

J'ai besoin d'écrire une requête linq pour l'instruction select, comme ci-dessous -

 select * 
from [dbo].[BaseClaim]
where WPId like (select WPId from UserProfiles where ID='1459') 

Je suis venu avec ci-dessous requête linq mais sa ne fonctionne pas comme prévu -

     var result = (from claimsRow in context.BaseClaims
                          where (from upRow in context.UserProfiles
                                 where upRow.ID == 1459
                                 select upRow.WPId).Contains(claimsRow.WPId)
                          select claimsRow);

et la requête sql ci-dessus linq génère est comme suit -

   SELECT 
   [Extent1].[WPId] AS [WPId]
   FROM [dbo].[BaseClaim] AS [Extent1]
   WHERE  EXISTS (SELECT 
             1 AS [C1]
                 FROM (SELECT 
                       [UserProfiles].[ID] AS [ID], 
                       [UserProfiles].[WPId] AS [WPId]      
                       FROM [dbo].[UserProfiles] AS [UserProfiles]) AS [Extent2]
                   WHERE (1459 = [Extent2].[ID]) AND ([Extent2].[WPId] = [Extent1].[WPId]))

Donc c'est clair que mon linq ne fonctionne pas comme sa en comparant les baseclaim.wpID à userprofile.wpid au lieu de COMME.

  • Pourquoi utilisez-vous like? Il n'existe aucun % caractères dans WPId?
  • regarde ma réponse ci-dessous. J'espère qu'il le frappe.
  • oui, il ya caractère % dans WPId
  • OK, de sorte que certaines des réponses ci-dessous pourrait travailler pour vous, je pense.
  • regarde mon édité réponse.
InformationsquelleAutor Sai | 2013-06-13