1

クラスの顧客がいます。アクセスdbデータベースからデータをロードしようとしています。

顧客クラスの構造は次のとおりです。

public class Customer
    {
        public int CustomerId { get; set; }
        public string CustomerName { get; set; }
        public string CustAddress { get; set; }
        public string PnoneNo { get; set; }
        public string MobileNo { get; set; }
        public string CstNo { get; set; }
        public string DlNo { get; set; }
        public decimal BalAmt { get; set; }
            }

そして、dbの私のテーブル構造は以下の通りです:

ここに画像の説明を入力

今、顧客クラスにデータをロードしようとすると、エラーがスローされます:

「指定されたキャストは無効です。」

クラスにデータをロードするために、以下のコードを使用しています:

public static List<Customer> LoadListItems(string strTable, string strOrderBy)
        {
            List<Customer> lstCustomer=null;
            try
            {
                DataUtility objDataUtility = new DataUtility();
                DataTable objCustomerList = objDataUtility.LoadCustomerInfo(strTable, strOrderBy);

                lstCustomer= objCustomerList.AsEnumerable().Select(row =>
                        new Customer
                        {
                            CustomerId = row.Field<int>("CID"), //throwing error for this line
                            CustomerName = row.Field<string>("salPNm"),
                            CustAddress = row.Field<string>("cadd"),
                            MobileNo = row.Field<string>("cmbl"),
                            PnoneNo = row.Field<string>("cph"),
                            DlNo = row.Field<string>("cDlN"),
                            CstNo = row.Field<string>("cTin"),
                            BalAmt = row.Field<decimal>("cobal")
                        }).ToList();


            }
            catch (Exception ex)
            {
                throw ex;
            }
            return lstCustomer;

        }

上記の方法CustomerId = row.Field<int>("CID"),では、この行にコメントするとエラーがスローされ、正常に動作しています。ennumrable リストから int 値を取得する方法を教えてください。

前もって感謝します。エシュワー

4

2 に答える 2

0

それを-に置き換えます

CustomerId = Convert.ToInt64(row.Field<int>("CID"));

また、Quick Watchこの行に適用して値を確認してください - row.Field<int>("CID"). それがそうでnot nullあるかどうか、そしてそれが返す値は何かを確認してください。

于 2012-10-14T17:38:15.307 に答える
0

これを試して

public class Customer
{
    public Int64 CustomerId { get; set; }
    public string CustomerName { get; set; }
    public string CustAddress { get; set; }
    public string PnoneNo { get; set; }
    public string MobileNo { get; set; }
    public string CstNo { get; set; }
    public string DlNo { get; set; }
    public decimal BalAmt { get; set; }
}

CustomerId = row.Field<Int64>("CID")

あなたの身元は長い整数だと思います。

于 2012-10-14T17:50:09.270 に答える