次のような単純なラムダ式があります。
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty)
ここで、式にもう1つのwhere句を追加する場合は、l.InternalName != String.Empty
それでは、式はどうなりますか?
することができます
_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.InternalName != String.Empty)
_
Where
実装を見ると、Func(T, bool)
を受け入れていることがわかります。つまり:
T
はIEnumerable型ですbool
は、ブール値を返す必要があることを意味しますだから、あなたがするとき
_.Where(l => l.InternalName != String.Empty)
// ^ ^---------- boolean part
// |------------------------------ "T" part
_
Where
に渡すラムダには、通常のC#コードを含めることができます。たとえば、&&
演算子:
.Where(l => l.Title != string.Empty && l.InternalName != string.Empty)
&&演算子を使用して同じwhereステートメントに含めることができます...
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty
&& l.InternalName != String.Empty)
次のような比較演算子のいずれかを使用できます(ifステートメントを実行するように考えてください)。
List<Int32> nums = new List<int>();
nums.Add(3);
nums.Add(10);
nums.Add(5);
var results = nums.Where(x => x == 3 || x == 10);
... 3と10を戻します。
多分
x=> x.Lists.Include(l => l.Title)
.Where(l => l.Title != string.Empty)
.Where(l => l.InternalName != string.Empty)
?
おそらく同じwhere句に入れることもできます:
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)
または
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty && l.Internal NAme != String.Empty)