我有2個實體框架查詢幾乎相同,除了2個屬性的lambda外; Select()
方法中的位置和日期時間。是否有可能將Linq中的lambda參數化爲實體選擇
我試圖創建一個擴展方法,分享其沒有FUNC PARAM作品的選擇,但它拋出一個異常,那麼我使用的位置PARAM:
public static IQueryable<DashboardItem> SelectDashboardItem(this IQueryable<Job> query,
string direction,
Func<Job, MeetingDetail> location)
{
return query
.Select(j => new DashboardItem()
{
JobId = j.Id,
Direction = direction,
CustomerName = j.Driver.Name,
Vehicle = j.Vehicle,
// This works without using the func
Location = location(j).MeetingLocation.Name,
DateTime = location(j).DateTime,
});
}
我看到他的錯誤信息:
LINQ to Entities不支持LINQ表達式節點類型'Invoke'。
不好意思,也許我冗長的問題造成了混淆,在.Select方法中' Location'和'DateTime'需要根據方向使用'j.Return'或'j.Departure',因此我試圖將它移動到一個擴展方法 –
檢查最後一個編輯和第二個語法。沒有一個編譯器方便,但類似的東西是一個更簡單的方法來實現這一點。 –
爲什麼這是downvoted? –