2009-11-17 11 views
41

ich einen einfachen Lambda-Ausdruck, die etwas geht:Mehrere Wo Klauseln in Lambda-Ausdrücke

x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty) 

Nun, wenn ich eine weitere hinzufügen möchten, wo Klausel zum Ausdruck, sagen wir, l.InternalName != String.Empty was würde dann die Ausdruck sein?

+1

Dies ist ein wenig vom Thema, aber die Die String-Klasse hat eine Methode String.IsNullOrEmpty, die Sie verwenden können, anstatt sie mit String.Empty –

Antwort

87

Kann sein

x => x.Lists.Include(l => l.Title) 
    .Where(l => l.Title != String.Empty && l.InternalName != String.Empty) 

oder

x => x.Lists.Include(l => l.Title) 
    .Where(l => l.Title != String.Empty) 
    .Where(l => l.InternalName != String.Empty) 

Wenn Sie bei Where Implementierung suchen, können Sie es sehen akzeptiert ein Func(T, bool); das heißt:

  • T ist Ihr IEnumerable Typ
  • bool bedeutet es, ein boolescher Wert

So zurückgeben muss, wenn Sie

.Where(l => l.InternalName != String.Empty) 
// ^     ^---------- boolean part 
//  |------------------------------ "T" part 
+6

+1 für den booleschen/T-Kommentar zu vergleichen –

2
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty).Where(l => l.Internal NAme != String.Empty) 

oder

tun
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty && l.Internal NAme != String.Empty) 
3

Vielleicht

x=> x.Lists.Include(l => l.Title) 
    .Where(l => l.Title != string.Empty) 
    .Where(l => l.InternalName != string.Empty) 

?

Sie können sich wahrscheinlich auch in der gleichen setzen where-Klausel:

x=> x.Lists.Include(l => l.Title) 
    .Where(l => l.Title != string.Empty && l.InternalName != string.Empty) 
5

Sie es in derselben umfassen kann, wo Anweisung mit dem & & Operator ...

x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty 
    && l.InternalName != String.Empty) 

Sie verwenden können Jeder der Vergleichsoperatoren (denken Sie daran, wie eine if-Anweisung zu tun) wie zum Beispiel ...

List<Int32> nums = new List<int>(); 

nums.Add(3); 
nums.Add(10); 
nums.Add(5); 

var results = nums.Where(x => x == 3 || x == 10); 

... würde bringen 3 und 10.

11

Die Lambda Sie Where passieren jeden normalen C# -Code können zum Beispiel die && Betreiber:

.Where(l => l.Title != string.Empty && l.InternalName != string.Empty) 
Verwandte Themen