2013-04-04 22 views
-2

使用帶條件的where子句過濾IEnumerable結果集將返回重複條目。LINQ查詢使用where和lambda表達式返回錯誤結果來篩選結果

這是我們用來過濾結果的查詢。 links是一個IEnumerable與計數299.當執行下面的查詢時,validLinks計數來到588,並且每個條目是重複的。請幫助我們確定此查詢有什麼問題。

var validLinks = links.Where(link => link.Categories 
             .Where(category => category.!IsCatchAll) 
             .Any()); 
+1

Where'永遠不能擴展'IEnumerable'中項目的數量。如果計數正確,那麼'Where或其他代碼'中的lambda擴展了底層的集合。 – JaredPar 2013-04-04 15:26:52

回答

3

由於!位於錯誤的位置,所以無法編譯該代碼。你也不需要做WhereAny。試試這個:

var validLinks = links.Where(link => link.Categories.Any(category => !category.IsCatchAll); 
+0

對不起。這是語法上的一個類型錯誤。你的回覆(p.s.w.g)是正確的,並且已經給出了299個結果。謝謝。然而,在這個方法之後執行一些更多的代碼並且再次給出重複。這是一個CAML查詢。將需要檢查! – 2013-04-12 07:32:49