我希望能夠爲一個LINQ下面的代碼寫入到實體查詢(EF6)構建表達樹LINQ到實體Where子句
Repo.ContactRelations.WhereActive()
.Select(r => new ContactModel
{
Id = r.Contact.Id,
FirstName = r.Contact.FirstName,
LastName = r.Contact.Surname,
WorkEmail = r.Contact.WorkEmail
})
沒有WhereActive()方法,我將不得不重複在許多地方下面的表達式:
Repo.ContactRelations.Where(c => c.EndDate == null || c.EndDate > DateTime.Today)
我試着寫一個簡單的擴展方法,但它給了一個錯誤「LINQ到實體無法識別方法WhereActive」
public static IEnumerable<T> WhereActive<T>(this IEnumerable<T> source) where T : class, IMayExpire
{
return source.Where(c => c.EndDate == null || c.EndDate > DateTime.Today);
}
在閱讀了LINQ to Entities vs LINQ to Object,以及Expression樹vs Func <>之後,我意識到需要構建一個完整的Expression樹來表達我的意圖。
我不知道該怎麼做,請問可以幫忙嗎?
通過本身的代碼應該不會導致該錯誤。你是用它作爲另一個查詢或類似的東西的子查詢? – svick