由於IEnumerable.Contains()
方法不接受謂詞作爲參數,大多數人使用下面的代碼來檢查的東西存在匹配條件:在Linq中,如何查找一個集合是否包含一個沒有使用Count(謂詞)的元素?
// ProductId is unique.
if (Products.Count(c => c.ProductId = 1234) == 1)
{
// Products list contains product 1234.
}
此代碼勢力通過走的每一件產品和檢查如果匹配。真的沒有必要這樣做。
查看Linq-to-SQL生成的SQL代碼時,存在同樣的問題。發送select count(*) ... where ProductId = @p0
聲明,而不是if exists
。
如何通過Linq找到一個包含符合條件的項目,而不必遍歷集合中的每個元素並計算匹配數量?
它的工作原理。 Sql查詢是'select(case when exists(...)then 1 else 0 end)'。謝謝。 – 2010-07-19 09:17:14