Est-ce que quelqu'un sait s'il existe un moyen de tester l'appartenance à une liste en utilisant une liste? Par exemple j'ai une classe nommée Membership qui a une propriété Rebates qui est de type List<Enums.RebateType>
. Je veux tester en utilisant une expression lambda pour voir si cette liste contient des rabais qui sont d'un type spécifique. Ma orginal expression lambda est la suivanteTest pour la liste <T> appartenance à une liste <T>
return Membership.Rebates.Exists(rebate =>
rebate.RebateType == Enums.RebateType.A &&
rebate.RebateStatus == Enums.RebateStatus.Approved);
au lieu d'avoir à faire ce qui suit:
return Membership.Rebates.Exists(rebate =>
(rebate.RebateType == Enums.RebateType.A &&
rebate.RebateStatus == Enums.RebateStatus.Approved) ||
(rebate.RebateType == Enums.RebateType.B &&
rebate.RebateStatus == Enums.RebateStatus.Approved));
Je me demandais si quelque chose de semblable à ce qui suit raillé jusqu'à la syntaxe SQL pourrait se faire via une expression lambda.
SELECT COUNT(*)
FROM Membership.Rebates
WHERE RebateType IN (ValidRebateTypes) AND Approved = true
ValidRebateTypes est curently List<Enums.RebateType>
que je teste pour savoir ValidRebateTypes = (Enums.RebateType.A, Enums.RebateType.B).
Le travail autour J'ai actuellement est comme suit:
bool exists = false;
foreach (Enums.RebateType rebateType in ValidRebateTypes())
{
exists = Membership.Rebates.Exists(
rebate =>
rebate.RebateType == rebateType &&
rebate.RebateStatus == Enums.RebateStatus.Approved);
if (exists) { break; }
}
return exists;
Si tout ce qu'il veut est de savoir s'il existe (pas le compte) alors utilisez '.Any()' au lieu de '.Count()', ainsi il peut quitter au premier match au lieu de passer par tout le shebang . –
Bonne prise, je reproduisais simplement son SQL. – Marc
Ou simplement remplacer Où avec tout et perdre le compte tout à fait. –