簡體   English   中英

如何在C#中填充對象?

[英]How can I fill the object in C#?

我有26個數據的對象。 另一方面,我有視圖模型對象。 我想將這26個數據傳遞到視圖模型中。 讓我用代碼解釋。

            cheq = Service.Cheque.Instance.GetRejectedChequeInq(1, nationalcode, "", "", "").ReturnValue.ChequeItem.ToList();
            cust = Service.Cheque.Instance.GetRejectedChequeInq(1, nationalcode, "", "", "").ReturnValue;
            var cheqdto = new PageData<ChequeDTO>();
            var ss = new PageData<CustomerDTO>();
            cheqdto.Data = cheq;
            cheqdto.Total = cheq.Count;
            IdentifingInfo id = new IdentifingInfo();
            id.Name = cust.Name;
            id.RegisterPlace = cust.CDSbt;
            id.NationalCode = cust.IDNO;
            id.RegisterDate = cust.DTSbt;
            id.RegisterNumber = cust.NOSbt;
            id.RegisterPlace = cust.CDSbt;
            ChequeItemVM cheqItem = new ChequeItemVM();

            foreach (var i in cheq)
            {
                cheqItem.AccountNumber = i.ACCNTNO;
                cheqItem.Ammount = i.AMCHQ;
                cheqItem.BankId = i.CDBNK;
                cheqItem.Branch = i.CDSHB;
                cheqItem.BranchName = i.DESC;
                cheqItem.ChequeDate = i.DTCHQ;
                cheqItem.ChequeID = i.IDCHQ;
                cheqItem.ChequeNumber = i.NOCHQ;
                cheqItem.CurrencyAmount = i.CONVRATE;
                cheqItem.CurrencyCode = i.CDARZ;
                cheqItem.RejectDate = i.BCKDTCHQ;
            }

這里的cheq對象是我的主要對象。 我想將cheq值傳遞給cheqitem所有26個值。 我知道這是一個不好的問題,但請幫助我。

也許是時候發現一些Linq了:

var cheques = cheq.Select(i => new ChequeItemVM()
    {
        AccountNumber = i.ACCNTNO,
        Ammount = i.AMCHQ,
        BankId = i.CDBNK,
        Branch = i.CDSHB,
        BranchName = i.DESC,
        ChequeDate = i.DTCHQ,
        ChequeID = i.IDCHQ,
        ChequeNumber = i.NOCHQ,
        CurrencyAmount = i.CONVRATE,
        CurrencyCode = i.CDARZ,
        RejectDate = i.BCKDTCHQ
    }).ToList();

編輯:您可能需要using System.Linq;添加using System.Linq; 在源文件的最頂部

您需要創建List<T>並在循環中一個接一個地添加項目:

List<ChequeItemVM> cheques = new List<ChequeItemVM>(); // create a list


            foreach (var i in cheq)
            {
                ChequeItemVM cheqItem = new ChequeItemVM(); // create item

                cheqItem.AccountNumber = i.ACCNTNO;
                cheqItem.Ammount = i.AMCHQ;
                cheqItem.BankId = i.CDBNK;
                cheqItem.Branch = i.CDSHB;
                cheqItem.BranchName = i.DESC;
                cheqItem.ChequeDate = i.DTCHQ;
                cheqItem.ChequeID = i.IDCHQ;
                cheqItem.ChequeNumber = i.NOCHQ;
                cheqItem.CurrencyAmount = i.CONVRATE;
                cheqItem.CurrencyCode = i.CDARZ;
                cheqItem.RejectDate = i.BCKDTCHQ;

                cheques.Add(cheqItem); // adding one by one item in List
            }

我建議,您應該重載ChequeItemVM構造函數以獲取輸入Check對象並初始化值。 因此,如果您需要在項目的其他地方使用相同的代碼,則可以節省代碼重復。

您的ChequeItemVM類應如下所示

class ChequeItemVM
{

    //Properties

    public ChequeItemVM()
    {
    }

    public ChequeItemVM( Cheque chq)
    {
        AccountNumber = chq.ACCNTNO;
        Ammount = chq.AMCHQ;
        BankId = chq.CDBNK;
        Branch = chq.CDSHB;
        BranchName = chq.DESC;
        ChequeDate = chq.DTCHQ;
        ChequeID = chq.IDCHQ;
        ChequeNumber = chq.NOCHQ;
        CurrencyAmount = chq.CONVRATE;
        CurrencyCode = chq.CDARZ;
        RejectDate = chq.BCKDTCHQ;
    }
}

您現有的代碼應如下所示

       var lstCheques = new List<ChequeItemVM>();


        foreach (var i in cheq)
        {
            lstCheques.Add(new ChequeItemVM(i));
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM