C# 如何从DataTable中提取值以在C中列出#
我有一个叫做PurchaseInvoiceForm的采购发票表单。我有一个DataGridView,还使用了一个列表来存储项目,所以我成功地将数据保存在了数据库中。但是,每当我想将数据加载回表单时,一切都很好,除了我无法从DataTable提取数据并加载回PurchaseInvoiceCart,这是一个列表。下面是代码C# 如何从DataTable中提取值以在C中列出#,c#,sql-server,C#,Sql Server,我有一个叫做PurchaseInvoiceForm的采购发票表单。我有一个DataGridView,还使用了一个列表来存储项目,所以我成功地将数据保存在了数据库中。但是,每当我想将数据加载回表单时,一切都很好,除了我无法从DataTable提取数据并加载回PurchaseInvoiceCart,这是一个列表。下面是代码 foreach (DataTable row in dtPurchaseInvoice) { PurchaseInvoice i
foreach (DataTable row in dtPurchaseInvoice)
{
PurchaseInvoice i = new PurchaseInvoice();
i.PurchaseInvoiceNo =Convert.ToInt32(row["PurchaseInvoiceNo"]);
}
你可以这样做
List<PurchaseInvoice> objPurchaseInvoiceList = new List<PurchaseInvoice>();
foreach (DataTable row in dtPurchaseInvoice)
{
objPurchaseInvoiceList.add(new PurchaseInvoice{ PurchaseInvoiceNo=Convert.ToInt32(row["PurchaseInvoiceNo"])});
}
List objPurchaseInvoiceList=new List();
foreach(dtPurchaseInvoice中的数据表行)
{
objPurchaseInvoiceList.add(新采购发票{PurchaseInvoiceNo=Convert.ToInt32(行[“采购发票”]));
}
要从数据表中提取数据,请使用System.data.DataSetExtensions
中的.Field()
扩展方法。请参阅文档
您需要创建一个类型为PurchaseInvoice
的列表,并在DataRow
collectiontable.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);
}
//为您的发票创建一个列表
列表发票=新列表();
foreach(dtPurchaseInvoice.Rows中的DataRow行)
{/^行
//创建发票
PurchaseInvoice发票=新的PurchaseInvoice();
//得到一个整数
invoice.PurchaseInvoiceNo=行字段(“PurchaseInvoiceNo”);
//获取字符串
invoice.CustomerName=行字段(“CustomerName”);
//约会时间
invoice.PurchaseDate=行字段(“PurchaseDate”);
//打替补
invoice.PurchaseValue=行字段(“PurchaseValue”);
//将发票添加到列表中
发票。添加(发票);
}
使用.Field()
扩展意味着您不需要将对象转换/强制转换为正确的类型-它由扩展为您处理
它还适用于可为空的字段:
DateTime? date = row.Field<DateTime?>("PurchaseDate");
DateTime?日期=行字段(“采购日期”);
尝试dtPurchaseInvoice.Rowsforeach(dtPurchaseInvoice.Rows中的DataRow行)dtPurchaseInvoice.Rows//中的DataRow项可能重复,并作为一行:dtPurchaseInvoice.Rows.Select(新建PurchaseInvoice{.PurchaseInvoiceNo=Convert.ToInt32(行[“PurchaseInvoiceNo”])).ToList();Alfons我有多个参数,最多8个。这可能会有帮助,但我有多个参数,最多8个。@FarooqAhmed,因此您无法通过此帮助满足您的要求?谢谢,亲爱的,它是有效的。@FarooqAhmed如果解决了问题,请接受我的答案:)@FarooqAhmed查看每个答案旁边的勾号。单击您最喜欢的答案旁边的勾选/复选框。看见
DateTime? date = row.Field<DateTime?>("PurchaseDate");