量詞
Contains: 如果輸入序列包含給定元素則返回true, 對應SQL語法為WHERE…IN
Any: 如果有任何的元素滿足給定的斷言判定則返回true, 對應SQL語法為WHERE…IN
All: 如果所有的元素都滿足給定的斷言判定則返回true, 對應SQL語法為WHERE
SequenceEqual: 如果第二個序列包含與輸入序列等同的元素則返回true
Contains與Any
Contains方法接受一個類型為TSource的參數, Any接受一個可選的斷言(predicate), 如果輸入序列包含有給定的元素則Contains返回true:
bool isTrue = new int[] { 23, 34, 4}.Contains (4);
對於Any, 如果表達式能夠匹配到至少一個元素, 則返回true, 我們可以用Any重寫前面的例子:
bool isTrue = new int[] { 23, 34, 4 }.Any (n => n == 4);
Any可以完成Contains能夠的所有事情, 而且可以做得更多:
bool isFalse = new int[] { 23, 34, 4 }.Any (n => n > 50);
調用Any的時候, 如果沒有斷言判定並且序列包含至少一個元素則永遠返回true, 以下是另外一種寫法返回與上述例子一致的結果:
bool isFalse = new int[] { 23, 34, 4 }.Where (n => n > 50).Any();
Any對於子查詢尤其有用.
All與SequenceEqual
只有當所有元素都滿足一個給定斷言的時候All才返回true, 以下例子返回那些采購訂單金額小於100的客戶列表:
dataContext.Customers.Where(c=>c.Purchases.All(p => p.Price < 100));
SequenceEqual用於比較兩個序列, 只有當兩個序列擁有完全等同的元素, 並且順序也一直時才返回true