如果這是一個重複請讓我知道,我到處搜索..這可能只是一個簡單的LINQ概念,我是不熟悉。LINQ where子句,布爾(孫)在陣列(父)裏面的數組(子)內的過濾器
這是我的數據結構的簡化版本:
public interface ICourse
{
List<ISession> Sessions { get; set; }
}
public interface ISession
{
Boolean InRange { get; set; }
}
問題:我有一個List<ICourse>
。我想要返回所有課程(ICourse
),但在這些課程上過濾會話(ISession
),並且僅包含InRange
(true
)的會話。
嘗試:
List<ICourse> results = //data retrieval.
return results.Where(course => course.Sessions
.Where(session => session.InRange).ToList<ISession>())
.ToList<ICourse>();
錯誤: 無法隱式轉換類型'System.Collections.Generic.List<ISession>'
到'bool'
。
無法將lambda表達式轉換爲預期的委託類型,因爲塊中的某些返回類型不會隱式轉換爲委託返回類型。
顯然,這不抱怨時,我只用一個Where
條款,即:
return results.Where(course => course.Sessions.Count > 0).ToList<ICourse>();
非常感謝您提供完整,精彩的答案。在你的幫助下,我能夠使我的代碼工作(很好),並擴展了我對LINQ(甚至更好)的理解。 – jhhoff02