c# – 如何修复“应用单个聚合的集合必须为空或者只包含一个项目
发布时间:2020-12-15 22:45:13 所属栏目:百科 来源:网络整理
导读:有了这个查询,我得到一个InvalidOperationException:“应用Single聚合的集合必须为空或者只包含一个项目”. Listint olsesUsedForTaskCompletion = new Listint();olsesUsedForTaskCompletion.AddRange(task.OrderLineSpecifications_QtysCompleted.Select(
有了这个查询,我得到一个InvalidOperationException:“应用Single聚合的集合必须为空或者只包含一个项目”.
List<int> olsesUsedForTaskCompletion = new List<int>(); olsesUsedForTaskCompletion.AddRange(task.OrderLineSpecifications_QtysCompleted.Select(ols => ols.Key).ToList()); var allRelatedTasks = (from t in new XPQuery<Core.Model.Task.Task>(session,true) join ols in new XPQuery<OrderLineSpecification>(session,true) on t.PickSpecification equals ols.PickSpecification where t.PickSpecification == task.PickSpecification && t.Status != TaskStatuses.Cancelled && olsesUsedForTaskCompletion.Contains(ols.Oid) select t).ToList(); 我希望在我加入时只获得具有特定ID的OLS.我究竟做错了什么? 这是堆栈跟踪: at DevExpress.Xpo.Helpers.InTransactionLoader.ProcessException(Exception ex) at DevExpress.Xpo.Helpers.InTransactionLoader.ProcessAnalyzeAndExecQuery() at DevExpress.Xpo.Helpers.InTransactionLoader.Process() at DevExpress.Xpo.Helpers.InTransactionLoader.GetObjects(ObjectsQuery[] queries) at DevExpress.Xpo.Helpers.InTransactionLoader.GetObjects(Session session,ObjectsQuery[] queries) at DevExpress.Xpo.Session.<>c__DisplayClass16.<GetObjectsInTransaction>b__14() at DevExpress.Xpo.Logger.LogManager.Log[T](String category,LogHandler`1 handler,MessageHandler`1 createMessageHandler) at DevExpress.Xpo.Session.GetObjectsInTransaction(XPClassInfo classInfo,CriteriaOperator condition,SortingCollection sorting,Int32 skipSelectedRecords,Int32 topSelectedRecords,Boolean selectDeleted) at DevExpress.Xpo.XPQueryBase.SessionGetObjects(XPClassInfo classInfo,Boolean selectDeleted) at DevExpress.Xpo.XPQueryBase.GetObjects() at DevExpress.Xpo.XPQueryBase.Enumerate(Type type) at DevExpress.Xpo.XPQuery`1.GetEnumerator() at DevExpress.Xpo.XPQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at Davanti.WMS.Services.Implementation.Outbound.OrderLineSpecificationStatusService.ChangeStatusToPickedToShipToStageOrStaged(Session session,IList`1 tasks,IList`1 olsWithoutTasks) in c:CoraxDAV_WMSDEVSRCAPPWMSDavanti.WMS.Services.ImplementationOutboundOrderLineSpecificationStatusService.cs:line 471 更新: // compose list of olses for which status will be updated List<OrderLineSpecification> olSpecs = (from ols in new XPQuery<OrderLineSpecification>(session,true) where ols.Status != OrderLineSpecificationStatus.Cancelled //... && ols.PickSpecification == task.PickSpecification && (olsesUsedForTaskCompletion.Count == 0 || (olsesUsedForTaskCompletion.Contains(ols.Oid) && ols.QtyOrdered == ols.QtyPicked)) select ols).ToList(); var pickSpecificationKeys = (from ols in olSpecs select ols.PickSpecification.Oid).Distinct().ToList(); var allRelatedTasks = (from t in new XPQuery<Core.Model.Task.Task>(session,true) where pickSpecificationKeys.Contains(t.PickSpecification.Oid) && t.Status != TaskStatuses.Cancelled select t).ToList(); 我只希望这会工作,无论客户的数据库结构,duble参考还是…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |