【问题标题】:How To Extract Values From DataTable To List in C#C#如何从数据表中提取值到列表中
【发布时间】:2019-03-18 14:35:26
【问题描述】:

我有一个名为 PurchaseInvoiceForm 的采购发票表格。我有一个 DataGridView 并且还使用了一个列表来存储项目,所以我成功地将数据保存在数据库中。但是每当我想将数据加载回表单时,一切都很好,除了我无法从数据表中提取数据并加载回 PurchaseInvoiceCart那是一个列表。所以这里是代码。

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

【问题讨论】:

标签: c# sql-server


【解决方案1】:

要从数据表中提取数据,请使用System.Data.DataSetExtensions 中的.Field<T>() 扩展方法。请参阅文档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&lt;T&gt;() 扩展意味着您不需要将对象转换/转换为正确的类型 - 它由扩展为您处理。

它也适用于可为空的字段:

DateTime? date = row.Field<DateTime?>("PurchaseDate");

【讨论】:

  • 谢谢亲爱的它的作品。
  • @FarooqAhmed 如果解决了问题,请接受我的回答 :)
  • @FarooqAhmed 查看每个答案旁边的勾号。单击您最喜欢的答案旁边的勾号/检查。见how to accept answer
【解决方案2】:
foreach (DataRow row in dtPurchaseInvoice.Rows)
    {
        PurchaseInvoice i = new PurchaseInvoice();
        i.PurchaseInvoiceNo =Convert.ToInt32(row["PurchaseInvoiceNo"]);              
    }

【讨论】:

  • 作为单行:dtPurchaseInvoice.Rows.Select(new PurchaseInvoice{.PurchaseInvoiceNo =Convert.ToInt32(row["PurchaseInvoiceNo"])}).ToList();
  • Alfons 我有多个参数,最多 8 个。
【解决方案3】:

你可以这样做。

List<PurchaseInvoice> objPurchaseInvoiceList = new  List<PurchaseInvoice>();
foreach (DataTable row in dtPurchaseInvoice)
{
    objPurchaseInvoiceList.add(new  PurchaseInvoice{ PurchaseInvoiceNo=Convert.ToInt32(row["PurchaseInvoiceNo"])});                  
}

【讨论】:

  • 这可能会有所帮助,但我有多个参数,最多 8 个。
  • @FarooqAhmed 所以您无法在此帮助下满足您的要求?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2019-01-20
相关资源
最近更新 更多