J'ai une simple expression lambda qui ressemble à ceci:
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty)
Maintenant, si je veux ajouter une autre clause where à l'expression, disons, l.InternalName != String.Empty
alors quelle serait l'expression?
Peut être
x => x.Lists.Include(l => l.Title)
.Where(l => l.Title != String.Empty && l.InternalName != String.Empty)
ou
x => x.Lists.Include(l => l.Title)
.Where(l => l.Title != String.Empty)
.Where(l => l.InternalName != String.Empty)
Lorsque vous examinez l'implémentation de Where
, vous pouvez voir qu'elle accepte un Func(T, bool)
; cela signifie:
T
est votre type IEnumerablebool
signifie qu'il doit renvoyer une valeur booléenneAlors, quand tu fais
.Where(l => l.InternalName != String.Empty)
// ^ ^---------- boolean part
// |------------------------------ "T" part
Le lambda que vous passez à Where
peut inclure n’importe quel code C # normal, par exemple le &&
opérateur:
.Where(l => l.Title != string.Empty && l.InternalName != string.Empty)
Vous pouvez l'inclure dans la même déclaration where avec l'opérateur && ...
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty
&& l.InternalName != String.Empty)
Vous pouvez utiliser n’importe quel des opérateurs de comparaison (pensez-y comme faire une instruction if) tel que ...
List<Int32> nums = new List<int>();
nums.Add(3);
nums.Add(10);
nums.Add(5);
var results = nums.Where(x => x == 3 || x == 10);
... ramènerait 3 et 10.
Peut être
x=> x.Lists.Include(l => l.Title)
.Where(l => l.Title != string.Empty)
.Where(l => l.InternalName != string.Empty)
?
Vous pouvez probablement aussi le mettre dans la même clause où:
x=> x.Lists.Include(l => l.Title)
.Where(l => l.Title != string.Empty && l.InternalName != string.Empty)
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty).Where(l => l.Internal NAme != String.Empty)
ou
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty && l.Internal NAme != String.Empty)