Voici un exemple de la requête, je suis en train de convertir LINQ:
SELECT *
FROM Users
WHERE Users.lastname LIKE '%fra%'
AND Users.Id IN (
SELECT UserId
FROM CompanyRolesToUsers
WHERE CompanyRoleId in (2,3,4) )
Il y a un FK relation entre CompanyRolesToUsers
et Users
, mais c'est un de nombreux de nombreux de la relation et de l' CompanyRolesToUsers
est la table de jonction.
Nous avons déjà plus de notre site construit, et nous avons déjà plus de filtrage de travail par la construction d'Expressions à l'aide d'un PredicateExtensions classe.
Le code pour la simple filtres ressemble à quelque chose comme ceci:
if (!string.IsNullOrEmpty(TextBoxLastName.Text))
{
predicateAnd = predicateAnd.And(c => c.LastName.Contains(
TextBoxLastName.Text.Trim()));
}
e.Result = context.Users.Where(predicateAnd);
J'essaye d'ajouter un prédicat pour une sous-sélection d'une autre table. (CompanyRolesToUsers
)
Ce que j'aimerais être en mesure d'ajouter, c'est quelque chose qui fait ceci:
int[] selectedRoles = GetSelectedRoles();
if( selectedRoles.Length > 0 )
{
//somehow only select the userid from here ???:
var subquery = from u in CompanyRolesToUsers
where u.RoleID in selectedRoles
select u.UserId;
//somehow transform this into an Expression ???:
var subExpression = Expression.Invoke(subquery);
//and add it on to the existing expressions ???:
predicateAnd = predicateAnd.And(subExpression);
}
Est-il possible de faire cela? C'est frustrant parce que je peux écrire la procédure stockée facilement, mais je suis nouveau sur ce LINQ chose et j'ai une date limite. Je n'ai pas été en mesure de trouver un exemple qui correspond à la hausse, mais je suis sûr qu'elle est là quelque part.
TIA,
Marcel