Как извлечь значения из таблицы данных в список в C # - PullRequest
1 голос
/ 18 марта 2019

У меня есть форма счета на покупку, которая называется BuyInvoiceForm. У меня есть DataGridView в нем, а также использовал список для хранения элементов, поэтому я успешно сохранил данные в базе данных. Но всякий раз, когда я хочу загрузить данные обратно в форму, все в порядке, за исключением я не могу извлечь данные из DataTable и загрузить обратно в PurchaseInvoiceCart Это список. Так вот код.

    foreach (DataTable row in dtPurchaseInvoice)
        {
            PurchaseInvoice i = new PurchaseInvoice();
            i.PurchaseInvoiceNo =Convert.ToInt32(row["PurchaseInvoiceNo"]);              
        }

Ответы [ 3 ]

1 голос
/ 18 марта 2019

Чтобы извлечь данные из таблицы данных, используйте метод расширения .Field<T>() из System.Data.DataSetExtensions. Пожалуйста, смотрите документацию DataRow.Field .

Вам необходимо создать список типа PurchaseInvoice и выполнить итерацию по коллекции DataRow table.Rows.

.

См. Пример ниже:

// create a list for your invoices
List<PurchaseInvoice> invoices = new List<PurchaseInvoice>();

foreach (DataRow row in dtPurchaseInvoice.Rows)
{   //                                   ^ Rows
    // create invoice
    PurchaseInvoice invoice = new PurchaseInvoice();

    // get an int
    invoice.PurchaseInvoiceNo = row.Field<int>("PurchaseInvoiceNo"); 

    // get a string
    invoice.CustomerName = row.Field<string>("CustomerName");

    // get a DateTime
    invoice.PurchaseDate = row.Field<DateTime>("PurchaseDate");

    // get a double
    invoice.PurchaseValue = row.Field<double>("PurchaseValue");

    // add invoice to list     
    invoices.Add(invoice);
}

Использование расширения .Field<T>() означает, что вам не нужно преобразовывать / приводить объект в нужный тип - он обрабатывается расширением для вас.

Он также работает с пустыми полями:

DateTime? date = row.Field<DateTime?>("PurchaseDate");
1 голос
/ 18 марта 2019
foreach (DataRow row in dtPurchaseInvoice.Rows)
    {
        PurchaseInvoice i = new PurchaseInvoice();
        i.PurchaseInvoiceNo =Convert.ToInt32(row["PurchaseInvoiceNo"]);              
    }
0 голосов
/ 18 марта 2019

Вы можете сделать это таким образом.

List<PurchaseInvoice> objPurchaseInvoiceList = new  List<PurchaseInvoice>();
foreach (DataTable row in dtPurchaseInvoice)
{
    objPurchaseInvoiceList.add(new  PurchaseInvoice{ PurchaseInvoiceNo=Convert.ToInt32(row["PurchaseInvoiceNo"])});                  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...