private void UpdateDoneNumber(ProduceFinish dmo) { var ids = dmo.Details.Select(x => x.ProductNotice_Detail_ID).ToList(); var detail = new JoinAlias(typeof(ProduceFinish_Detail)); var bill = new JoinAlias(typeof(ProduceFinish)); var dom = new DQueryDom(detail); dom.From.AddJoin(JoinType.Inner, new DQDmoSource(bill), DQCondition.EQ(bill, "ID", detail, "ProduceFinish_ID")); dom.EAddCheckedCondition(bill); dom.Where.Conditions.EFieldInList(DQExpression.Field(detail, "ProductNotice_Detail_ID"), ids); dom.Columns.Add(DQSelectColumn.Sum(detail, "Number")); dom.Columns.Add(DQSelectColumn.Field("ProductNotice_Detail_ID", detail)); dom.GroupBy.Expressions.Add(DQExpression.Field(detail, "ProductNotice_Detail_ID")); var tupleList = dom.EExecuteList <Money <decimal>?, long>(Session); foreach (var id in ids) { var number = tupleList.Where(x => x.Item2 == id).Sum(x => ((x.Item1 ?? 0).Value)); var update = new DQUpdateDom(typeof(ProductNotice_Detail)); update.Columns.Add(new DQUpdateColumn("DoneNumber", number)); update.Where.Conditions.Add(DQCondition.EQ("ID", id)); Session.ExecuteNonQuery(update); } }