查找数组中项的成员属性

时间:2011-06-27 04:02:51

标签: c#

我已将整个sale对象传入此函数。在那个sale对象中,有很多孩子,例如saleOrderItem,Payment,User ...

sale.payment是一个数组

问题: 1)如何从“sale.payment”对象中获取CodeNo? (因为付款是一个数组)
2)如何获得sale.payment.CourseByTutor.TutorId(付款是一个数组)

  public static object GetSalesDataBySaleOrderID(SaleOrder sale)
        {
            return sale.saleOrderItem
                       .Where(s => s != null)
                       .Select(s => new { 
                                          Id = s.Id,
                                          Username = sale.User.GetSingleUserById(s.UserId).Name,
                                          Amount = s.Amount,
                                          CodeNo = s.SaleOrder.payment.First().CodeNo,
                                          TutorName = sale.User.GetSingleUserById(s.SaleOrder.payment.FirstOrDefault().CourseByTutor.TutorId).Name,
                                        })
                       .ToList();
        }

以下是我如何将值绑定到对象

 private void SaveValueToObject()
    {
        saleOrder.UserId = UserInfo.Id;
        saleOrder.Date = DateTime.Now;            

        for (int i = 0; i < dgSale.Rows.Count; i++)
        {
            SaleOrderItem SaleItem = new SaleOrderItem();
            SaleItem.InventoryTypeId = Convert.ToInt32(dgSale.Rows[i].Cells["inventoryTypeId"].Value);
            SaleItem.InventoryOrCourseId = Convert.ToInt32(dgSale.Rows[i].Cells["inventoryId"].Value);
            SaleItem.Qty = Convert.ToInt32(dgSale.Rows[i].Cells["qty"].Value);
            SaleItem.Amount = Convert.ToDecimal(dgSale.Rows[i].Cells["total"].Value);
            SaleItem.UserId = Convert.ToInt32(dgSale.Rows[i].Cells["userId"].Value);
            SaleItem.Discount = Convert.ToDecimal(dgSale.Rows[i].Cells["discount"].Value);
            SaleItem.Remarks = (dgSale.Rows[i].Cells["remark"].Value == null) ? "" : dgSale.Rows[i].Cells["remark"].Value.ToString();
            SaleItem.Status = (int)SaleOrderStatus.Active;
            saleOrder.saleOrderItem[i] = SaleItem;                


            Payment p = new Payment();
            p.PayType = Convert.ToInt32(dgSale.Rows[i].Cells["payType"].Value);
            p.Code = (int)PaymentCode.RCT; // For Receipt prefix
            p.CodeNo = p.GetNewReceiptNo(p.Code); //Check if it is receipt, if yes, Get last Receipt No + 1
            p.UserId = (txtUserId.Text == string.Empty) ? 0 : Convert.ToInt32(txtUserId.Text);
            p.Amount = Convert.ToDecimal(dgSale.Rows[i].Cells["total"].Value);
            p.Remark = (dgSale.Rows[i].Cells["remark"].Value == null) ? "" : dgSale.Rows[i].Cells["remark"].Value.ToString();
            p.PaymentMethodId = saleOrder.PaymentMethodId;
            p.DateIssue = saleOrder.Date;

            p.CourseByTutor.TutorId = Convert.ToInt32(dgSale.Rows[i].Cells["tutorId"].Value);


            saleOrder.payment[i] = p;
        }
    }

1 个答案:

答案 0 :(得分:0)

我有一个解决方法并通过添加所需的属性解决了这个问题,例如: sale.saleOrderItem类中的TutorId。从而直接访问sale.SaleOrderItem.TutorId。
这听起来很愚蠢,但确实有效。