courses = courses.Where(
c => queryParameters.ShowInActive || c.Flags.Contains((ulong)CourseFlags.Active)
&&
(queryParameters.AuthorId <= 0 ||
(c.Authors != null && c.Authors.Exists(a => a.ID == queryParameters.AuthorId)))
&&
(queryParameters.CategoryIDs == null || queryParameters.CategoryIDs.Count == 0 ||
(c.Tags != null && c.Tags.Any(t => queryParameters.CategoryIDs.Contains(t.ID)))
&&
queryParameters.CourseIDs == null || queryParameters.CourseIDs.Count == 0 ||
queryParameters.CourseIDs.Contains(c.ID))
).ToList();
問題是queryParameters.CourseIDS.Count()
返回157,但上面的lambda表達式返回2500條記錄。我究竟做錯了什麼?我的lambda表達式不會產生我預期的結果
我也確信,ShowInactive
設置爲true和CategoryIDs
是零和AuthorId
是0
「課程」中有多少個對象/記錄?除了有'Id','Tags'和'Authors'列表,你可以告訴我們關於'courses'中的數據嗎? –
只需重寫此表達式而不使用lambda表達式。它不可讀。使用lambda表達式的主要原因是通過不必聲明具有微不足道的實現的委託(例如需要5行聲明和使用的1班輪)來減少混亂。 – evanmcdonnal
關於標題的說明...您的lambda按照書面形式工作。也許'我的lambda表達式不會產生我期望的結果'是一個更好的標題。 –