我想聯合實體框架中的兩個列表。在其中一個工會部分,我有一個收藏,另一個收藏是空的。我試圖把收集到空的,但它不工作...使用實體框架創建聯盟失敗
var query = Context.Assignments.AsQueryable();
var workItemQuery = Context.WorkItems.AsQueryable();
var assigments = query.Select(o => new WorkItemAssignment()
{
EndDate = o.WorkItem.EndDate,
StartDate = o.WorkItem.StartDate,
IsExternal = o.Resource.IsExternalEmp ? Resources.External : Resources.Internal,
ResourceAssignedName = o.Resource.FirstName + " " + o.Resource.LastName,
RoleName = o.Role.Name,
Specialties = o.AssignmentSpecialties.Select(a => a.Specialty.Name),
WorkItemName = o.WorkItem.Name,
WorkItemOwner = o.WorkItem.OwnerResource.FirstName + " " + o.WorkItem.OwnerResource.LastName,
WorkItemStatus = o.WorkItem.WorkItemStatus.Name,
Days = o.Days.Value,
Percentage = o.Percentage.Value,
RequestId = o.WorkRequestAllocationId != null && o.WorkRequestAllocationId != Guid.Empty ? o.WorkRequestAllocation.WorkRequest.RequestId : (int?) null
});
var workItemAssignments = workItemQuery.Select(o => new WorkItemAssignment()
{
EndDate = o.EndDate,
StartDate = o.StartDate,
IsExternal = "N/A",
ResourceAssignedName = "N/A",
RoleName = "N/A",
RoleProficiency = "N/A",
Specialties = Enumerable.Empty<string>().AsQueryable(), //DO NOT WORK !!!
WorkItemName = o.Name,
WorkItemOwner = o.OwnerResource.FirstName + " " + o.OwnerResource.LastName,
WorkItemStatus = o.WorkItemStatus.Name,
Days = null,
Percentage = null,
RequestId = null
});
return assigments.Union(workItemAssignments);
錯誤消息:
LINQ到實體無法識別方法 「System.Collections.Generic .IEnumerable`1 [System.String] EmptyString'方法,並且此方法無法轉換爲 存儲表達式。
當我從2個刪除查詢屬性「專業」,它的工作原理...
編輯:
因爲第一個答案,我想澄清,我真的需要留在實體環境中保持我的IQueryable
沒有我的列表實現。我的Kendo網格正在做一些過濾/分頁,我想發送一個IQueryable
。
更新2:
使用@Moho的解決方案後,它唯一缺少的IEqualityComparer
從2個查詢之間進行比較打消了我的收藏。
return assigments.Union(workItemAssignments ,assignmentEqualityComparer);
它是任何其他默認值的選項,只是沒有設置該屬性,讓它爲空,或者它會? – Servy
post'workItemQuery' – Moho
我已經添加了workItemQuery。之後也有一些過濾,但在這種情況下,這並不重要。 – Hemadeus